回文质数

来源:互联网 发布:unity3d如何播放视频 编辑:程序博客网 时间:2024/06/06 01:42

题目描述
因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。

写一个程序来找出范围[a,b](5 ≤ a < b ≤ 100000000)( 一亿)间的所有回文质数。

输入包括一行,分别为两个整数a和b。

输出一个回文质数的列表,一行一个。

样例输入

5 500
样例输出

5
7
11
101
131
151
181
191
313
353
373
383

思路:枚举一亿内的所有回文数,判断是否为质数即可
(注意:当数字位数为偶数时,只有11为质数,因为其他的数都能被11整除)

#include"iostream"#include"math.h"using namespace std;bool IsPrime(int x){    for(int i=2;i*i<=x;i++)    {        if(0==x%i)        return false;    }    return true;} int main(){    int a,b;    int ai[11000];    ai[0]=5, ai[1]=7, ai[2]=11;    int num=3;    for(int i=10;i<9999;i++)    {        int bit=(int)log10(i);        int sum=0;        int impo=i/10;        for(int j=bit-1;j>=0;j--)        {            sum+=(impo%10)*pow(10,j);            impo/=10;        }        int x=i*pow(10,bit)+sum;        if(IsPrime(x))        {            ai[num++] = x;        }    }    while(cin>>a>>b)    {        for(int i=0;i<num;i++)        {            if(ai[i]>b) break;            if(ai[i]>=a&&ai[i]<=b)  cout<<ai[i]<<endl;        }    }    return 0;} 
原创粉丝点击