Hi,
boss
I update more on this problem but still TLE.Please help me please, please, please, please, please.
Here is my code:
- Code: Select all
#include<cstdio>
#include<cstring>
bool sieve[10001011]={0};
bool prim[1000000]={0};
long rev( long I )
{
long sum=0,num=I;
while(num!=0)
{
sum+=num%10;
num=num/10;
}
return sum;
}
int main()
{
long t1,t2;
long i,j;
prim[2]=1;
sieve[0]=1; sieve[1]=1;
for(i=3 ; i<=1000000 ; i+=2)
{
sieve[i+1]=1;
if(sieve[i]==0 && i<=1000)
{
for(j=i*i ; j<=1000000 ; j+=2*i)
{
sieve[j]=1;
}
}
}
for(long I=3 ; I<=1000000 ; I+=2)
{
if(sieve[I]==0)
{
if(sieve[rev(I)]==0)
prim[I]=1;
}
}
long T;
scanf("%ld",&T);
while(T--)
{
scanf("%ld %ld",&t1,&t2);
long pr=0,st;
if(t1<=2 && t2>=2)
{
st=3;
pr++;
}
else if(t1%2==0 && t1>=3)
{
st=t1+1;
}
else st=t1;
for(long I=st ; I<=t2 ; I+=2)
{
if(prim[I]==1)
{
pr++;
}
}
printf("%ld\n",pr);
}
return 0;
}