1015 Reversible Primes (20)(20 分)
A reversible prime in any number system is a prime whose "reverse" inthat number system is also a prime. For example in the decimal system 73is a reversible prime because its reverse 37 is also a prime.
Now given any two positive integers N (< 10^5^) 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 linewhich contains two integers N and D. The input is finished by a negativeN.
Output Specification:
For each test case, print in one line "Yes" if N is a reversible primewith radix D, or "No" if not.
Sample Input:
73 10
23 2
23 10
-2
Sample Output:
Yes
Yes
No
Analysis:
At first glance, i can't understand the problem.After careful thinking, i figure it out .The main procedure is turn the number into D radix, then reverse it and turn it to 10 radix .if the number and its "reverse" are both prime,print "Yes",else print "No".
A pitfall:
1 is not a prime.
package A1015;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
//System.setIn(new FileInputStream("src/A1015/test.txt"));
BufferedReader bReader=new BufferedReader(new InputStreamReader(System.in));
while(true) {
String in[]=bReader.readLine().split(" ");
int num=Integer.parseInt(in[0]);
if(num<0)break;
int d=Integer.parseInt(in[1]);
if(isprime(num)&&isprime(fun(num,d)))
System.out.println("Yes");
else
System.out.println("No");
}
}
private static int fun(int num,int d) {
StringBuilder stringBuilder=new StringBuilder(Integer.toString(num, d)).reverse();//Java has the corresponding classes and methods in radix changing
return Integer.parseInt(stringBuilder.toString(),d);
}
private static boolean isprime(int num) {
if(num==1)return false;//special judge
for(int i=2;i<=Math.sqrt(num);i++)
if(num%i==0)
return false;
return true;
}
}