1163: 素数回文
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 358 Solved: 119
[Submit][Status][BBS]
Description
小王对既是素数又是回文的数特别感兴趣。比如说151既是素数又是个回文。现在小王想要你帮助他找出某个范围内的素数回文数,请你写个程序找出 a 跟b 之间满足条件的数。(5 <= a < b <= 100,000,000);
Input
输入a和b(5 <= a < b <= 100,000)
Output
按从小到大输出a,b之间所有满足条件的素数回文数
Sample Input
5 500
Sample Output
5
7
11
101
131
151
181
191
313
353
373
383
#include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> using namespace std; const int N=100001; int flag[N]; char c[N]; int a,b; void Isprim() { for(int i=0; i<=N; i++) { flag[i]=0; } for(int i=2;i<=N;i++) { if(flag[i]==0) { for( int j=2;i*j<=N;j++) { flag[i*j]=1; } } } return; } void xixi(int x) { int n,o=0; while(x) { n=x%10; x=x/10; c[o++]=n+'0';//必须要加‘0’,否则存的就是ASCII码 }//因为是回文数,就算是反过来也没关系 } int main() { while(scanf("%d%d",&a,&b)!=EOF) { Isprim(); for(int i=a; i<=b; i++) { if(flag[i]==0) { xixi(i); int len=strlen(c); for(int j=0;j<=len/2;j++) { if(c[j]!=c[len-j-1]) break; if(j==len/2) printf("%d ",i); } } } } return 0; }