先是用了埃氏筛,最后一个TLE,现在改成欧拉筛还是过不了,求助大佬帮忙给看一下,谢谢!
#include<bits/stdc++.h>
#define maxn 100000003
using namespace std;
bool isHw(int num){
int nn=num,s=0;
while(nn){
s=10*s+nn%10;
nn/=10;
}
if(s==num) return true;
else return false;
}
bool vis[maxn];//true为合数
int prime[maxn];
int main(){
int a,b,cnt=0;
cin>>a>>b;
for(int i=2;i<=b;++i){ //欧拉筛
if(!vis[i]) prime[++cnt]=i;
for(int j=1;j<=cnt&&i*prime[j]<=b;++j){
vis[i*prime[j]]=true;
if(i%prime[j]==0) break;
}
}
for(int i=a;i<=b;++i){
if(i%2&&isHw(i)&&!vis[i]){
cout<<i<<endl;
}
}
return 0;
}