回文质数 (Prime Palindromes)

题目描述

因为 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;
}

你可能感兴趣的:(c++,c语言,c#)