求指定区间的回文素数
#include<bits/stdc++.h>
#define N 10000010
using namespace std;
bool st[N];
int cnt = 0,primes[N],n,m;
void getprimes(int n){
for(int i = 2;i < n;i++){
if(!st[i]){
primes[cnt++] = i;
}
for(int j = 0;primes[j] <= n / i;j++){
st[primes[j]*i] = true;
if(i % primes[j] == 0){
break;
}
}
}
}
bool check(int p){
string s = to_string(p);
for(int i = 0,j = s.size() - 1;i < j;i++,j--){
if(s[i] != s[j]){
return false;
}
}
return true;
}
int main(){
cin >> n >> m;
getprimes(N-1);
for(int i = 0;i < cnt;i++){
int prime = primes[i];
if(prime >= n && prime <= m && check(prime)){
cout << prime << endl;
}
}
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)