您的位置:首页 > 编程语言 > C语言/C++

回文质数

2017-10-21 17:33 155 查看

回文质数

时限: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>
using namespace std;

int hw(long long num)//定义判断回文质数的函数
{

int m=num,n=1;

while(m)
{
m/=10;
n*=10;
}

n/=10;

m=num;

for(int i=n;i>=1;i/=100)//判断回文
{
if(m/i!=m%10)
return 0;
m-=m/i*i;
m/=10;
}

for(int i=2;i*i<=num;i++)//判断质数
{
if(num%i==0)
return 0;
}
return 1;
}

int main()
{
long long a,b;

cin>>a>>b;

if(a==1)
a+=1;

if(b>10000000)  /*偶数位回文数一定是11的倍数,因此一千万以上的都忽略*/
b=10000000;

for(long long i=a;i<=b;i++)
if(hw(i)==1)
cout<<i<<endl;

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 c++