回文质数
时限:1000ms 内存限制:10000K 总时限:3000ms
描述:
因为151既是一个质数又是一个回文数(从左到右和从右到左看是一样的),所以151是回文质数.
写一个程序来找出范围[a,b](5<=a<b<=100,000,000)间的所有回文质数.
输入:
第一行 两个整数:a和b.
输出:
输出一个回文质数的列表,一行一个.
输入样例:
5 500
输出样例:
5 7 11 101 131 151 181 191 313 353 373 383
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int func(int n)//构造回文数
{
int res=n/10;
while(n>0)
{
res=res*10+n%10;
n=n/10;
}
return res;
}
int isprime(int n)//判素数
{
if(n==1)return 0;
if(n==2)return 1;
int i,k=sqrt(n);
for(i=2;i<=k;i++)
{
if(n%i==0)return 0;
}
return 1;
}
int main()
{
int a,b,i;
cin>>a>>b;
if(a<12)
{
for(i=a;i<12;i++)
{
if(isprime(i))cout<<i<<endl;
}
}
for(i=10;i<=10000;i++)
{
int x;
x=func(i);
if(x>=a){
if(x>b)break;
if(isprime(x))cout<<x<<endl;}
}
return 0;
}