每日一题 东方博宜(1942 - 回文质数 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;
const int N=1e6+10;
vector  k;
int prime[N];
int cnt;
bool vis[100000001];
void get_primes(int n)                  
    for (int i=2;i<=n;i++)
    {
        if (!vis[i]) prime[cnt++]=i;
            
        for (int j=0;prime[j]<=n/i;j++)
            {
                vis[prime[j]*i]=true;
                if (i%prime[j]==0) break;
            }
    }
}
bool is_palind(int n)             
{
    k.clear();
    while (n>0)
    {
        k.push_back(n%10);
        n /=10;
    }
    int i=0,j=k.size()-1;
    while (i<=j)
    {
        if (k[i]==k[j])i++,j--;
        else return false;
    }
     return true;
}
int main()
{
    int a,b;
    cin>>a>>b;
    b=min(b,9999999); 
    get_primes(b);
    if (a%2==0) a++;      
    for (int i=a;i<=b;i +=2)    
    if (!vis[i]&&is_palind(i))   
    cout<

你可能感兴趣的:(算法,c++)