#include<bits/stdc++.h>
using namespace std;
int a,b;
//自定义函数hw,判断是否是回文
//整体思路:得到一个数的每个位,然后存到数组里,判断对应位置是否相同
bool hw(int x)
{
int a[100]={0};
int top=0;
while(x!=0)
{
a[top]=x%10;
top++;
x=x/10;
}
for(int i=0;i<top;i++)
{
if(a[i]!=a[top-1-i])
{
return 0;
}
}
return 1;
}
//自定义函数zs,判断是否是质数
//整体思路:(1)注意数字1和数字2要单独说明;(2)防止超时用sqrt()
bool zs(int x)
{
if(x<=1) return 0;
if(x==2) return 1;
for(int i=2;i<=sqrt(x);i++)
{
if(x%i==0) return 0;
}
return 1;
}
int main()
{
cin>>a>>b;
//↓第一个坑,2是回文,也是质数
if(a==2) cout<<"2"<<endl;
//↓第二个坑,为了不超时,“偶数中除了2,都不可能是质数”,那么就只需要循环所有奇数
//↓确保从奇数开头,循环步长为2
if(a%2==0) a++;
for(int i=a;i<=b;i=i+2)
{
if(hw(i)==1)
{
if(zs(i)==1)
{
cout<<i<<endl;
}
}
}
return 0;
}
学习笔记-找出范围 [a,b](5≤a<b≤100,000,000)间的所有回文质数
于 2024-12-27 15:51:53 首次发布
469

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



