#include<bits/stdc++.h>
using namespace std;
const int maxn=1e8;
int prime[maxn],cnt;
bool st[maxn];
void ol_prime(int n){
for(int i = 2;i <= n;i++)
{
if(!st[i])
{
prime[++cnt] = i;//i是素数,存储到prime数组中
}
for(int j = 1;prime[j] <= n / i;j++)
{
st[prime[j] * i] = true;//将i的质数倍数进行标记
if(i % prime[j] == 0)
{
break;
}
}
}
return ;
}
bool pd_hw(int x)
{
int y=x,num=0;//int y=x,防止x被改变
while (y!=0)
{
num=num*10+y%10;//上一次数字的记录进位再加上下一位数
y/=10;
}
if (num==x) return 1;
else return 0;
}
int main(){
int n,m;
cin>>m>>n;
ol_prime(n);
for(int i=1;i<=cnt;i++){
if(pd_hw(prime[i]) && prime[i]>=m && prime[i]<=n){
cout<<prime[i]<<endl;
}
}
return 0;
}
我这里选择了线性筛和回文判断,然后最后一点T,换了printf和scanf开了o2过了