fanbole @ 2024-07-03 20:12:30
#include<bits/stdc++.h>
using namespace std;
bool ss(int x){
for(int i=2;i<=sqrt(x);i++){
if(x%i==0){
return 0;
}
}
return 1;
}
bool da(int x){
int a[9],b[9],w=0,s=0;
while(x!=0){
w++;
a[w]=x%10;
x/=10;
}
for(int i=w;i>=1;i--){
s++;
b[s]=a[i];
}
for(int i=1;i<=w;i++){
if(a[i]!=b[i]){
return 0;
}
}
return 1;
}
int main(){
int n,b;
cin>>b>>n;
for(int i=b;i<=n;i++){
if(da(i)==1&&ss(i)==1){
cout<<i<<endl;
}
}
return 0;
}
by Qiu101029 @ 2024-07-03 20:31:47
@fanbole
#include<cstdio>
#include<algorithm>
using namespace std;
bool ch(int x){
if(x==11){
return 1;
}//特判11
if(x>=10&&x<=99||x>=1000&&x<=9999||x>=100000&&x<=999999){
return 0;
}//这些范围内无回文质数(11除外,已经特判,详见题解)
int n=0,p=x;
while(p!=0){
n=n*10+p%10;
p/=10;
}
if(n!=x){
return 0;
}//判断回文数
for(int i=2;i*i<=x;i++){
if(x%i==0){
return 0;
}
}
return 1;//判断质数
}//考虑到回文数比质数判断快,回文数的判断放在前面,时间更优
int a,b;
int main(){
scanf("%d%d",&a,&b);//输入
b=min(b,9999999);//9999999到100000000之间也没有回文质数
for(int i=a;i<=b;i++){
if(ch(i)){
printf("%d\n",i);//输出
}
}
return 0;
}
by syy999 @ 2024-07-05 09:22:14
#include<bits/stdc++.h>
using namespace std;
#define int long long
bool p(int a){
if(a==1) return 0;
for(int i=2;i<=sqrt(a);i++) if(a%i==0) return 0;
return 1;
}
bool h(int a){
int f=0,t=a;
while(t!=0){
f=f*10+t%10;
t=t/10;
}
if(f==a) return 1;
else return 0;
}
signed main(){
int a,b;
cin>>a>>b;
for(int i=a;i<=b;i++){
if(h(i)&&p(i)) cout<<i<<endl;
}
return 0;
}
绿蓝灯亮起