1015. Reversible Primes (20)
A reversible prime in any number system is a prime whose "reverse" in that number system is also a prime. For example in the decimal system 73 is a reversible prime because its reverse 37 is also a prime.
Now given any two positive integers N (< 105) and D (1 < D <= 10), you are supposed to tell if N is a reversible prime with radix D.
Input Specification:
The input file consists of several test cases. Each case occupies a line which contains two integers N and D. The input is finished by a negative N.
Output Specification:
For each test case, print in one line "Yes" if N is a reversible prime with radix D, or "No" if not.
Sample Input:73 10 23 2 23 10 -2Sample Output:
Yes Yes No
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<Integer> list = new ArrayList<Integer>();
int num = scanner.nextInt();
// check the end of input
while (num > 0) {
list.add(num);
list.add(scanner.nextInt());
num = scanner.nextInt();
}
scanner.close();
for (int i = 0; i < list.size(); i += 2) {
// prime judgment
if (isPrimes(list.get(i)) && isPrimes(getNumInRadixAndReverse(list.get(i), list.get(i + 1))))
System.out.println("Yes");
else
System.out.println("No");
}
}
static int getNumInRadixAndReverse(int num, int radix) {
int result = 0;
String nums = "";
while (num != 0) {
nums += num % radix;
num = num / radix;
}
for (int i = 0; i < nums.length(); i++) {
result *= radix;
result += (nums.charAt(i) - '0');
}
return result;
}
static boolean isPrimes(int num) {
boolean result = true;
if (num == 1 || num == 0)
result = false;
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) {
result = false;
break;
}
}
return result;
}
}