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; } }