题目传送门
题解
- 如果没有多次询问,那么直接随便晒一晒就好了
- 那么询问次数很多,可以用前缀数组维护
AC-Code
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e7 + 7;
int pre[maxn];
bool vis[maxn];
void init() {
vis[1] = 1;
for (int i = 2; i <= maxn; i++) {
if (!vis[i]) {
pre[i] = pre[i - 1] + 1;
for (int j = i << 1; j <= maxn; j += i)
vis[j] = 1;
}
else
pre[i] = pre[i - 1];
}
}
int main() {
std::ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
init();
int T; cin >> T;
while (T--) {
int a, b; cin >> a >> b;
cout << pre[b] - pre[a - 1] << endl;
}
}