HDOJ 1431 回文素数

版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}
























猜你喜欢

转载自blog.csdn.net/mml5211314/article/details/51093726