PAT (Advanced Level) 1015 Reversible Primes (20 points) JAVA solution

Here Insert Picture Description

Sample Input:

73 10
23 2
23 10
-2

Sample Output:

Yes
Yes
No



import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		while (true) {
			String[] temp = bf.readLine().split(" ");
			if (Integer.parseInt(temp[0]) < 0) {
				break;
			}

			int num = Integer.parseInt(temp[0]);
			int radix = Integer.parseInt(temp[1]);
			if (isPrime(num) == false) {
				System.out.println("No");
			} else {
				// 转成相应的进制
				String string = Integer.toString(num, radix);
				StringBuffer sb = new StringBuffer(string);
				// 将其反转
				StringBuffer reverse = sb.reverse();
				String StrRe = reverse + "";
				// 将反转之后的转为十进制
				int Strre = Integer.parseInt(StrRe, radix);
				//System.out.println("翻转之后int:" + Strre);
				// 如果本身是素数,反转还是素数就Yes
				if (isPrime(Strre)) {
					System.out.println("Yes");
				} else {
					System.out.println("No");
				}

			}

		}

	}

	private static boolean isPrime(int n) {
		if (n == 0 || n == 1)
			return false;
		for (int i = 2; i <= Math.sqrt(n); i++) {
			if (n % i == 0)
				return false;
		}
		return true;
	}

}

Here Insert Picture Description

tips:

// 将十进制转化为任意进制
				String string = Integer.toString(num, radix);
//将任意进制转化位十进制
//radix为原来Str的进制 如Integer.parseInt(11101, 2)-->29
				int Strre = Integer.parseInt(Str, radix);
Published 83 original articles · won praise 1 · views 1016

Guess you like

Origin blog.csdn.net/qq_44028719/article/details/103995132