[USACO1.5]回文质数 Prime Palindromes - 洛谷
/*
* @Description: To iterate is human, to recurse divine.
* @Autor: Recursion
* @Date: 2022-03-14 10:16:28
* @LastEditTime: 2022-03-14 10:44:35
*/
#include<iostream>
#include<string.h>
#include<math.h>
using namespace std;
int Prime[(int)1e8+10],cnt=0;
bool isPrime[(int)1e8+10];
void GetPrime(int x)
{
memset(isPrime,1,sizeof(isPrime));
isPrime[1]=0;
for(int i=2;i<=x;i++){
if(isPrime[i])
Prime[++cnt]=i;
for(int j=1;j<=cnt&&i*Prime[j]<=x;j++){
isPrime[i*Prime[j]]=0;
if(i%Prime[j]==0)
break;
}
}
}
bool f(int x)
{
int temp=x;
int ans=0;
while(temp!=0){
ans=ans*10+temp%10;
temp/=10;
}
if(x==ans)
return true;
else
return false;
}
int main()
{
int n;
int a,b;
cin>>a>>b;
GetPrime(b);
for(int i=a;i<=b;i++){
if(i==9989900) //如果到了这个数,就break
break;
if(f(i)&&isPrime[i])
cout<<i<<endl;
}
}
该博客展示了一段C++代码,用于寻找指定范围内(a到b)的回文质数。回文数是指正读反读都一样的数,质数是只有1和本身两个正因数的自然数。代码首先通过GetPrime函数生成素数表,然后判断每个数是否为回文,并输出符合条件的数。示例中特别检查了数字9989900。
819

被折叠的 条评论
为什么被折叠?



