RT,测了测试点1的数据
#include <bits/stdc++.h>
using namespace std;
#define maxn 100001000
bool prime[50020];
int prime2[50020];
int pr = 1;
void yu() {
// cout << "start" << endl;
memset(prime, 1, sizeof(prime));
prime[1] = false;
for (int i = 2; i <= 50000; i++) {
if (prime[i]) {
prime2[pr++] = i;
// cout << prime2[pr - 1] << endl;
}
// cout << "half circle" << endl;
for (int j = 1; j <= pr && i * prime2[j] <= 50000; j++) {
prime[i * prime2[j]] = 0;
if (i % prime2[j] == 0) {
break;
}
}
// cout << "one circle" << endl;
}
return;
}
bool check(int x) {
for (int i = 1; i < pr; i++) {
if (x % prime2[i] == 0 && x != prime2[i]) {
return false;
}
}
return true;
}
int n, q;
int main() {
std::ios::sync_with_stdio(0);
yu(); //跑出五万以内的质数
long long l, r;
int ans;
cin >> l >> r;
for (int i = l; i <= r; i++) {
if (check(i)) {
ans++;
}
}
cout << ans;
return 0;
}