1015. Reversible Primes (20)
时间限制
400 ms
内存限制
65536 kB
代码长度限制
16000 B
判题程序
Standard
作者
CHEN, Yue
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
题目解析:
1、本题需要做的事情就是将判断数字N以及N在D进制下的“反数”是否同时为素数。
所以要做的就是算出N在D进制下的数,得到其“反数”后重新转换回十进制数。再行判断N和得到的新数是否同时为素数。
2、考察重点:进制转换和素数判断。
3、注意点:1)0和1不是素数;2)输入结束由一个负数标识
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;
}
}