样例通过,但WA+TLE,求大佬们不鄙视
#include<cstdio>
#include<bitset>
using namespace std;
const int N=100000010;
bitset<N> not_prime;
bool is_prime(int n){
return !not_prime[n];
}
void set_prime(int n){
not_prime[n]=true;
}
int primes_in_range(int l,int r){
int sum=0;
for(int i=l;i<=r;i++){
if(is_prime(i)){
sum++;
}
}
return sum;
}
int rebuild(int n){
int sum=0;
while(n!=0){
sum+=n%10;
n/=10;
}
return sum;
}
void init(){
set_prime(0);
set_prime(1);
for(int i=2;i<=N;i++){
if(is_prime(i)){
for(int j=i+i;j<=N;j+=i){
//if(j<=15) printf("%d is not prime\n",j);
set_prime(j);
}
if(!is_prime(rebuild(i))){
//if(i<=15) printf("%d is not double prime\n",i);
set_prime(i);
}
}
}
}
void test(){
printf("prime={");
for(int i=1;i<=14;i++){
printf("%d,",(int)!not_prime[i]);
}
printf("%d}\n",(int)!not_prime[15]);
}
int main(){
int t,l,r;
//printf("%d",rebuild(123));
init();
//test();
scanf("%d",&t);
while(t--){
scanf("%d%d",&l,&r);
printf("anwser=");
printf("%d\n",primes_in_range(l,r));
}
return 0;
}