#include <iostream>
#include <cstdio>
using namespace std;
#define N 1000000
int reverse(int n, int radix) {
int d[30];
int dn = 0;
while(n) {
d[dn++] = n%radix;
n /= radix;
}
for(int i = 0; i < dn; i ++) {
n *= radix;
n += d[i];
}
return n;
}
bool checkprime(int n) {
static char prime[N] = {0, -1};
static int last = 1;
do {
if(prime[n])
break;
while(prime[last])
last ++;
prime[last] = 1;
for(int i = 2; ; i ++) {
int np = i*last;
if(np < N)
prime[np] = -1;
else
break;
}
} while(true);
return prime[n] > 0 ? true : false;
}
const char * str[] = { "Yes", "No" };
int main(int argc, char **argv) {
int n, radix;
while(true) {
cin >> n;
if(n < 0)
break;
cin >> radix;
cout << str[!(checkprime(n) && checkprime(reverse(n, radix)))] << endl;
}
return 0;
}
1015. Reversible Primes (20)
最新推荐文章于 2022-02-22 19:31:52 发布