解法一:进制转换+数学
主要实现两个小功能:进制转换并翻转,判断是否为素数。
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
while (true) {
in.nextToken();
int N = (int) in.nval;
if (N < 0) {
break;
}
in.nextToken();
int radix = (int) in.nval;
int reverse = reverse(N, radix);
if (isPrime(N) && isPrime(reverse)) {
out.println("Yes");
} else {
out.println("No");
}
}
out.flush();
}
private static int reverse(int N, int radix) {
String s = new StringBuilder(Integer.toString(N, radix)).reverse().toString();
return Integer.parseInt(s, radix);
}
private static boolean isPrime(int N) {
if (N <= 1) {
return false;
}
boolean flag = true;
for (int i = 2; i <= Math.sqrt(N); ++i) {
if (N % i == 0) {
flag = false;
break;
}
}
return flag;
}
}