思路:迴文加質數判斷,用到線性篩法打表
#include<cstdio>
int prime[10000005];//儲存素數
int check[10000005];//標記合數
void is_peime(int n){
int cnt=0;
check[1]=true;//1不是素數
for(int i=2;i<=n;i++){
if(!check[i])prime[cnt++]=i;//說明是素數
for(int j=0;j<cnt&&i*prime[j]<=n;j++){
check[i*prime[j]]=true;//倍數是合數
if(i%prime[j]==0)break;
}
}
}
int huiwen(int n){//判斷迴文數
int m=n;
int t=0;
t+=n%10;
n/=10;
while(n){
t*=10;
t+=n%10;
n/=10;
}
if(m==t){
return 1;
}else{
return 0;
}
}
int main(){
int a,b;
scanf("%d %d",&a,&b);
if(b>10000000)b=10000000;
is_peime(b);
for(int i=a;i<=b;i++){
if(i>10000000)break;
if(huiwen(i)&&!check[i]){
printf("%d\n",i);
}
}
return 0;
}