您的位置:首页 > 其它

素数回文

2014-05-24 19:31 190 查看
#include <stdio.h>
#include <stdlib.h>

int main()
{
long ch[15],num,NUM,k=0,sign,SIGN,I,SUM[100000],i,j,a,b;

for(i=5;i<=9989899;i++)
{
if(i%2==0)
continue;
for(SIGN=1,I=i;;SIGN++)
{
I=I/10;
if(I==0)
break;
}
for(j=0,num=10,NUM=1;j<SIGN;NUM*=10,num*=10,j++)
{
ch[j]=(i%(num))/NUM;
}
for(j=0,sign=0;2*j<(SIGN);j++)
{
if(ch[j]!=ch[SIGN-1-j])
sign++;
}
if(sign==0)
{
for(j=2;(j*j)<=i;j++)
{

if(i%j==0)
sign++;
}

if(sign==0)
{
SUM[k]=i;
k++;
}
}
}
while(scanf("%ld%ld",&a,&b)!=EOF)
{
for(i=a,j=0;i<b;i++)
if(i>SUM[j]&&SUM[j]!=0)
{
printf("%ld\n",SUM[j]);j++;
}
putchar('\n');

}
return 0;
}


View Code

素数回文

Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 84 Accepted Submission(s) : 17
[align=left]Problem Description[/align]
xiaoou33对既是素数又是回文的数特别感兴趣。比如说151既是素数又是个回文。现在xiaoou333想要你帮助他找出某个范围内的素数回文数,请你写个程序找出 a 跟b 之间满足条件的数。(5 <= a < b <= 100,000,000);

[align=left]Input[/align]
这里有许多组数据,每组包括两组数据a跟b。

[align=left]Output[/align]
对每一组数据,按从小到大输出a,b之间所有满足条件的素数回文数(包括a跟b)每组数据之后空一行。

[align=left]Sample Input[/align]

5 500

[align=left]Sample Output[/align]

5 7 11 101 131 151 181 191 313 353 373 383

[align=left]Author[/align]
xiaoou333

[align=left]Source[/align]
zjut
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: