caizehao @ 2023-04-28 17:32:14
代码如下:
#include <bits/stdc++.h>
using namespace std;
bool is_hw(int a){
int b=a;
int c=0;
while(b!=0){
c=c*10+b%10;
b=b/10;
}
if(c==a){
return true;
}
return false;
}
int is_ss(int a){
if(a%2==0 && a!=2){
return false;
}
int x=sqrt(a);
for(int i=3;i<=x;i+=2){
if(a%i==0){
return false;
}
}
return true;
}
int main(){
int a,b;
scanf("%d%d",&a,&b);
for(int i=a;i<=b;i++){
if(is_hw(i) && is_ss(i)){
printf("%d\n",i);
}
}
return 0;
}
by Patronus @ 2023-04-28 17:46:00
先用线性筛把区间内的质数筛出来在判断是否回文
by caizehao @ 2023-04-29 18:34:10
看了题解后发现在循环中加上:
if(i==9989900){
break;
}
就可以了
AC代码如下:
#include <bits/stdc++.h>
#define int long long
using namespace std;
bool is_hw(int a){
int b=a;
int c=0;
while(b!=0){
c=c*10+b%10;
b=b/10;
}
if(c==a){
return true;
}
return false;
}
int is_ss(int a){
if(a%2==0 && a!=2){
return false;
}
int x=sqrt(a);
for(int i=3;i<=x;i+=2){
if(a%i==0){
return false;
}
}
return true;
}
signed main(){
int a,b;
scanf("%d%d",&a,&b);
for(int i=a;i<=b;i++){
if(i==9989900){
break;
}
if(is_hw(i) && is_ss(i)){
printf("%d\n",i);
}
}
return 0;
}