题意 && 解题思路:
看上去是个送分题,但是也卡了一会儿,主要是没看懂题=。=。。。。。。
如果输入23 2,23的2进制-->10111,10111倒过来是11101,11101转为10进制-->29,23和29都是质数,就返回true,否则false。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// System.out.println(reverse(2, 23));
int n = input.nextInt();
while(n >= 0) {
int d = input.nextInt();
if(isPrime(n) && isPrime(reverse(d, n)))
System.out.println("Yes");
else
System.out.println("No");
n = input.nextInt();
}
input.close();
}
public static boolean isPrime(int n) {
if(n <= 1) return false;
double len = Math.sqrt(n);
for(int i=2; i<=len; i++)
if(n % i == 0)
return false;
return true;
}
public static int reverse(int radix, int n) {
String output = "";
int num = n;
while(num != 0) {
int temp = num % radix;
output += temp+"";
num /= radix;
}
int rev = 0;
for(int exp = 0; exp<output.length(); exp++) {
rev += Math.pow(radix, output.length()-exp-1)*(output.charAt(exp)-'0');
}
return rev;
}
}