Java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* Main
*/
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String[] line = null;
while ((line = reader.readLine().split(" ")).length == 2) {
int num = Integer.parseInt(line[0]);
int d = Integer.parseInt(line[1]);
String str = changeToO(num, d);
boolean flag = isPrime(changeToD(new StringBuilder(str).reverse().toString(), d)) && isPrime(num);
System.out.println(flag == true ? "Yes" : "No");
}
reader.close();
}
// 进制转换 其他进制->十进制
public static int changeToD(String num, int d1) {
char[] n1 = num.toCharArray();
// 先转化为十进制
int num1 = 0;
int exp = 1;
for (int i = n1.length - 1; i >= 0; i--) {
num1 += exp * (n1[i] - '0');
exp *= d1;
}
return num1;
}
// 十进制转化为其他进制
public static String changeToO(int num, int d) {
StringBuilder builder = new StringBuilder();
while (num != 0) {
builder.append(num % d);
num /= d;
}
return builder.reverse().toString();
}
public static boolean isPrime(int num) {
if (num <= 1) {
return false;
}
if (num == 2) {
return true;
}
for (int i = 2; i < Math.sqrt(num) + 1; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
}