サンプル入力:
10 73
23 2
23 10
-2
サンプル出力:
はい
はい
ません
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
while (true) {
String[] temp = bf.readLine().split(" ");
if (Integer.parseInt(temp[0]) < 0) {
break;
}
int num = Integer.parseInt(temp[0]);
int radix = Integer.parseInt(temp[1]);
if (isPrime(num) == false) {
System.out.println("No");
} else {
// 转成相应的进制
String string = Integer.toString(num, radix);
StringBuffer sb = new StringBuffer(string);
// 将其反转
StringBuffer reverse = sb.reverse();
String StrRe = reverse + "";
// 将反转之后的转为十进制
int Strre = Integer.parseInt(StrRe, radix);
//System.out.println("翻转之后int:" + Strre);
// 如果本身是素数,反转还是素数就Yes
if (isPrime(Strre)) {
System.out.println("Yes");
} else {
System.out.println("No");
}
}
}
}
private static boolean isPrime(int n) {
if (n == 0 || n == 1)
return false;
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0)
return false;
}
return true;
}
}
チップ:
// 将十进制转化为任意进制
String string = Integer.toString(num, radix);
//将任意进制转化位十进制
//radix为原来Str的进制 如Integer.parseInt(11101, 2)-->29
int Strre = Integer.parseInt(Str, radix);