素数回文

 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\n",SUM[j]);j++;
49             }
50         putchar('\n');
51 
52     }
53     return 0;
54 }
View Code

 

素数回文

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
 
posted @ 2014-05-24 19:31  Wurq  阅读(290)  评论(0编辑  收藏  举报