素数筛+前缀和
#include <iostream>
#include<vector>
using namespace std;
const int MAX=1e6;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
vector<bool>isprime(MAX+1,true);
isprime[0]=isprime[1]=false;
for(int i=2;i*i<=MAX;i++){
if(isprime[i]){
for(int j=i*i;j<=MAX;j+=i)isprime[j]=false;
}
}
vector<int>prefix(MAX+1,0);
for(int i=1;i<=MAX;i++){
prefix[i]=prefix[i-1]+isprime[i];
}
int n;
cin>>n;
while(n--){
int l,r;
cin>>l>>r;
cout<<prefix[r]-prefix[l-1]<<endl;
}
return 0;
}
// 64 位输出请用 printf("%lld")

京公网安备 11010502036488号