1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int main() 5 { 6 long ch[15],num,NUM,k=0,sign,SIGN,I,SUM[100000],i,j,a,b; 7 8 for(i=5;i<=9989899;i++) 9 { 10 if(i%2==0) 11 continue; 12 for(SIGN=1,I=i;;SIGN++) 13 { 14 I=I/10; 15 if(I==0) 16 break; 17 } 18 for(j=0,num=10,NUM=1;j<SIGN;NUM*=10,num*=10,j++) 19 { 20 ch[j]=(i%(num))/NUM; 21 } 22 for(j=0,sign=0;2*j<(SIGN);j++) 23 { 24 if(ch[j]!=ch[SIGN-1-j]) 25 sign++; 26 } 27 if(sign==0) 28 { 29 for(j=2;(j*j)<=i;j++) 30 { 31 32 if(i%j==0) 33 sign++; 34 } 35 36 if(sign==0) 37 { 38 SUM[k]=i; 39 k++; 40 } 41 } 42 } 43 while(scanf("%ld%ld",&a,&b)!=EOF) 44 { 45 for(i=a,j=0;i<b;i++) 46 if(i>SUM[j]&&SUM[j]!=0) 47 { 48 printf("%ld ",SUM[j]);j++; 49 } 50 putchar(' '); 51 52 } 53 return 0; 54 }
素数回文
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 84 Accepted Submission(s) : 17
Problem Description
xiaoou33对既是素数又是回文的数特别感兴趣。比如说151既是素数又是个回文。现在xiaoou333想要你帮助他找出某个范围内的素数回文数,请你写个程序找出 a 跟b 之间满足条件的数。(5 <= a < b <= 100,000,000);
Input
这里有许多组数据,每组包括两组数据a跟b。
Output
对每一组数据,按从小到大输出a,b之间所有满足条件的素数回文数(包括a跟b)每组数据之后空一行。
Sample Input
5 500
Sample Output
5 7 11 101 131 151 181 191 313 353 373 383
Author
xiaoou333
Source
zjut