因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。
写一个程序来找出范围 [a,b](5≤a( 一亿)间的所有回文质数。
第 1 行: 二个整数 a 和 b .
输出一个回文质数的列表,一行一个。
5 500
5
7
11
101
131
151
181
191
313
353
373
383
//素数筛法+回文数判断
#include
using namespace std;
bool book[100000001];
void prime (int b)
{
memset(book,true,sizeof(book));
book[1]=false;
int n=sqrt(b);
for(int i=2;i<=n;i++)
{
if(book[i])
{
for(int j=2;j<=b/i;j++)
{
book[i*j]=false;
}
}
}
}
bool isHWS(int num)
{
int temp=num,ans=0;
while(temp!=0)
{
ans=ans*10+temp%10;
temp/=10;
}
if(ans==num)
{
return true;
}
return false;
}
int main()
{
int a,b=0;
cin>>a>>b;
if(b>=10000000)
{
b=9999999;
}
prime(b);
if(a>b)
{
return 0;
}
if(a%2==0)
{
a++;
}
for(int i=a;i<=b;i+=2)
{
if(book[i]&&isHWS(i))
{
cout<<i<<endl;
}
}
return 0;
}