疑似正解哈,理论时间复杂度是够的
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int MAXN=1e6+5;
int a1,b1,tot,ans[MAXN];
inline bool isprime(int x){
if(x==0||x==1) return false;
if(x==2) return true;
for(int i=2;i*i<=x;i++){
if(x%i==0) return false;
}
return true;
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
cin>>a1>>b1;
for(int i=1;i<=9;i++){//一位数
if(isprime(i)) ans[++tot]=i;
}
for(int i=1;i<=9;i++){//两位数
if(isprime(i*10+i)) ans[++tot]=i*10+i;//构建回文数+判断+储存答案
}
for(int i=1;i<=9;i++){//三位数第一位模拟
for(int j=0;j<=9;j++){//三位数第二位模拟
if(isprime(i*100+j*10+i)) ans[++tot]=i*100+j*10+i;
}
}
for(int i=1;i<=9;i++){//四位数第一位模拟
for(int j=0;j<=9;j++){//四位数第二位模拟
if(isprime(i*1000+j*100+j*10+i)) ans[++tot]=i*1000+j*100+j*10+i;
}
}
for(int i=1;i<=9;i++){//五位数第一位模拟
for(int j=0;j<=9;j++){//五位数第二位模拟
for(int z=0;z<=9;z++){//五位数第三位模拟
if(isprime(i*10000+j*1000+z*100+j*10+i)) ans[++tot]=i*10000+j*1000+z*100+j*10+i;
}
}
}
for(int i=1;i<=9;i++){//六位数第一位模拟
for(int j=0;j<=9;j++){//六位数第二位模拟
for(int z=0;z<=9;z++){//六位数第三位模拟
if(isprime(i*100000+j*10000+z*1000+z*100+j*10+i)) ans[++tot]=i*100000+j*10000+z*1000+z*100+j*10+i;
}
}
}
for(int i=1;i<=9;i++){//七位数第一位模拟
for(int j=0;j<=9;j++){//七位数第二位模拟
for(int z=0;z<=9;z++){//七位数第三位模拟
for(int a=0;a<=9;a++){//七位数第四位模拟
if(isprime(i*1000000+j*100000+z*10000+a*1000+z*100+j*10+i)) ans[++tot]=i*1000000+j*100000+z*10000+a*1000+z*100+j*10+i;
}
}
}
}
for(int i=1;i<=9;i++){//八位数第一位模拟
for(int j=0;j<=9;j++){//八位数第二位模拟
for(int z=0;z<=9;z++){//八位数第三位模拟
for(int a=0;a<=9;a++){//八位数第四位模拟
if(isprime(i*10000000+j*1000000+z*100000+a*10000+a*1000+z*100+j*10+i)) ans[++tot]=i*10000000+j*1000000+z*100000+a*10000+a*1000+z*100+j*10+i;
}
}
}
}
for(int i=1;i<=9;i++){//九位数第一位模拟
for(int j=0;j<=9;j++){//九位数第二位模拟
for(int z=0;z<=9;z++){//九位数第三位模拟
for(int a=0;a<=9;a++){//九位数第四位模拟
for(int b=0;b<=9;b++){//九位数第五位模拟
if(isprime(i*100000000+j*10000000+z*1000000+a*100000+b*10000+a*1000+z*100+j*10+i)) ans[++tot]=i*100000000+j*10000000+z*1000000+a*100000+b*10000+a*1000+z*100+j*10+i;
}
}
}
}
}
/*至此,已成艺术*/
for(int i=1;i<=tot;i++){
if(ans[i]>=a1&&ans[i]<=b1) cout<<ans[i]<<endl;
//if(ans[i]>=b1) break;//小优化
}
return 0;
}