#include<cstdio>
#include<vector>
#include<math.h>
using namespace std;
vector<int> v;
int N, D;
bool isPr = 1;
void isPrime(int a) {
if (a == 1) {
isPr = 0;
return;
}
else if (a == 2 || a == 3) {
isPr = 1;
return;
}
else {
for (int i = 2; i * i <= a; i++) {
if (a % i == 0) {
isPr = 0;
}
}
}
}
int calculateNum() {
int p = 0;
int t = 1;
for (int i = 0; i < v.size(); i++) {
p = p + v[v.size() - 1 - i] * t;
t = t * D;
}
return p;
}
int main() {
while (1) {
scanf("%d", &N);
if (N >= 0) {
isPr = 1;
v.clear();
scanf("%d", &D);
int n = N;
while (n > 0) {
v.push_back(n % D);
n = n / D;
}
int p = calculateNum();
isPrime(N);
if (isPr == 0) {
printf("No\n");
continue;
}
isPrime(p);
if (isPr == 1) {
printf("Yes\n");
continue;
}
else {
printf("No\n");
continue;
}
}
else {
break;
}
}
return 0;
}
1015 Reversible Primes (20分)
最新推荐文章于 2023-10-12 16:54:52 发布