5 500
5 7 11 101 131 151 181 191 313 353 373 383
#include<stdio.h> #include<string.h> int prime[1000]; bool is[9989900]; int k; void fun() { int i=2,j; for(j=i*i;j<9989900;j+=i) is[j]=1; for(i=3;i<=3333;i+=2) { if(!is[i]) { for(j=i*i;j<9989900;j+=i) is[j]=1; } } } int jud(int n) { int a=n; int b=0; while(n) { b=b*10; b+=n%10; n/=10; } return a==b; } void init() { int i; k=0; fun(); for(i=5;i<9989900;i+=2) { if(!is[i]&&jud(i)) { prime[k++]=i; } } } int main() { init(); int a,b; while(scanf("%d%d",&a,&b)!=EOF) { int i; for(i=0;i<k;i++) { if(prime[i]>b) break; if(prime[i]>=a) { printf("%d\n",prime[i]); } } printf("\n"); } }
原文:http://blog.csdn.net/yu_ch_sh/article/details/44563235