#include <iostream>
#include <cmath>
using namespace std;
/*
要求:(1)判斷該數是否為素數(2)判斷該數基于d進制的逆序的十進制數是否為素數
思路:(1)IsPrime判斷素數 (2)基于d進制的逆序,并轉換為十進制
*/
bool IsPrime(int n){
if(n <= 1) return false;
for (int i = 2; i <= sqrt(n); i++) {
if(n % i == 0) return false;
}
return true;
}
int main(int argc, const char * argv[]) {
int n, d;
while (scanf("%d", &n) != EOF) {
if (n < 0) {
break;
}
scanf("%d", &d);
if (!IsPrime(n)) {
printf("No\n");
continue;
}
//基于d進制的逆序(給出的數是十進制呀 是以要換成d進制後再逆序)
int a[100], m = 0, len = 0;
while (n) {
a[len++] = n % d;
n /= d;
}
for (int i = 0; i < len; i++) {
m = m * d + a[i];
}
if (IsPrime(m)) {
printf("Yes\n");
}else{
printf("No\n");
}
}
return 0;
}