/*
ID :
LANG: C++11
TASK: pprime
*/
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
int lb, rb;
bool judgePrime(int n){
int bound = sqrt(n);
if (n < 2)
return false;
for(int i = 2; i <= bound; i ++){
if(n % i == 0){
return false;
}
}
return true;
}
inline int reverse(int n)
{
int t = 0;
while (n != 0){
t = t * 10 + n % 10;
n = n / 10;
}
return t;
}
void godd(int a, int b, int n){
int t = 0;
for(int i = a; i <= b; i ++){
t = i * pow(10, n - 1) + reverse(i / 10);
if(t >= lb && t <= rb && judgePrime(t))
printf("%d\n", t);
}
}
void geven(int a, int b, int n){
int t= 0;
for(int i = a; i <= b; i ++){
t = i * pow(10, n) + reverse(i);
if(t >= lb && t <= rb && judgePrime(t))
printf("%d\n", t);
}
}
void generate()
{
for (int k = 1; k <= 4; k ++){
int a = 0, b = 0;
for(int i = 0; i < k; i ++){
a = pow(10, i);
b = b * 10 + 9;
}
godd(a, b, k);
geven(a, b, k);
}
}
int main() {
freopen("pprime.in", "r", stdin);
freopen("pprime.out", "w", stdout);
cin >> lb >> rb;
generate();
return 0;
}
【USACO】Prime Palindromes
最新推荐文章于 2022-02-02 10:59:14 发布