版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mml5211314/article/details/51093726
|
素数回文
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
151
131
181
353
191 313 373
383
|
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int huiwen[9989900]={0};
int sushu[1010];
bool fun(int a)
{
int temp=a;
int b=0;
while(temp!=0)
{
b=b*10;
b+=temp%10;
temp/=10;
}
return a==b;
}
int main()
{
int n,m,i,j,k=0;
i=2;
for(j=i*i;j<=9989899;j+=i)
huiwen[j]=1;
for(i=3;i<3200;i=i+2)
{
if(huiwen[i])
continue;
for(j=i*i;j<=9989899;j+=i)
huiwen[j]=1;
}
for(i=5;i<=9989899;i+=2)
if(!huiwen[i]&&fun(i))
huiwen[k++]=i;
while (scanf ("%d%d",&n,&m)!=EOF)
{
for (i=0;i<k;i++)
{
if (huiwen[i]<n)
continue;
else if(huiwen[i]<=m)
printf ("%d\n",huiwen[i]);
else
break;
}
}
return 0;
}