用的暴力枚举,优化了几个地方:
- 从偶数开始,每次+2,排除奇数
- 先判断回文,再判断质数
- 跳过偶数位的数(除了2位数)
- 运行到9989899(后面没了)
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
if(a%2==0) a++;
b=min(9989899,b);
for(int i=a;i<=b;i+=2)
{
int k=i,t=0,ws=0;
while(k)
{
t=t*10+k%10;
k/=10;
ws++;
}
if(ws%2==0&&ws!=2)
i=i*10+1;
if(t==i)
{
bool zs=1;
for(int j=3;j*j<=i;j+=2)
if(i%j==0) zs=0;
if(zs==1)
cout<<i<<"\n";
}
}
return 0;
}
c++谢谢
解释得这么清楚,看得懂吧