FanZhiyu1 @ 2024-07-25 16:46:20
#include<bits/stdc++.h>
using namespace std;
string change(int n){
string s;
int i=0;
while(n>0){
s+=n%10+'0';
n/=10;
i++;
}
for(int i=0,j=s.size()-1;i<j;i++,j--){
swap(s[i],s[j]);
}
return s;
}
bool isprime(int n){
for(int i=2;i<=sqrt(n);i++)
if(n%i==0) return 0;
return 1;
}
bool ishw(string s){
int len=s.length();
for(int i=0,j=len-1;i<j;i++,j--)
if(s[i]!=s[j]) return 0;
return 1;
}
void work(int m,int n){
for(int i=m;i<=n;i+=2){
if(isprime(i)&&ishw(change(i))) cout<<i<<endl;
}
}
int main()
{
int m,n;
cin>>m>>n;
if(m%2==0) m++;
work(m,n);
return 0;
}
by ATION001 @ 2024-07-25 16:48:27
@FanZhiyu1 温馨提示:要用线性筛筛质数。
#include<bits/stdc++.h>
#include<string>
#include<cstring>
using namespace std;
const int dioj=1e7+5;
bool isp[dioj];
int prime[dioj];
int cnt=0;
void ct(){
memset(isp,true,sizeof(isp));
for(int i=2;i<=dioj;i++){
if(isp[i]==true){
prime[++cnt]=i;
}
for(int j=1;j<=cnt&&i*prime[j]<=dioj;j++){
isp[i*prime[j]]=false;
if(i%prime[j]==0){
break;
}
}
}
}
int main(){
int n,n1;
cin>>n>>n1;
ct();
for(int i=1;i<=cnt;i++){
if(prime[i]<=n1&&prime[i]>=n){
string d=to_string(prime[i]);
string cd=d;
reverse(cd.begin(),cd.end());
if(cd==d){
cout<<d<<endl;
}
}
}
return 0;
}
by FanZhiyu1 @ 2024-07-26 06:47:06
@ATION001 谢谢大佬!