解法一:进制转换+数学

主要实现两个小功能:进制转换并翻转,判断是否为素数。

  1. import java.io.*;
  2. import java.util.*;
  3. public class Main {
  4. public static void main(String[] args) throws IOException {
  5. StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
  6. PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
  7. while (true) {
  8. in.nextToken();
  9. int N = (int) in.nval;
  10. if (N < 0) {
  11. break;
  12. }
  13. in.nextToken();
  14. int radix = (int) in.nval;
  15. int reverse = reverse(N, radix);
  16. if (isPrime(N) && isPrime(reverse)) {
  17. out.println("Yes");
  18. } else {
  19. out.println("No");
  20. }
  21. }
  22. out.flush();
  23. }
  24. private static int reverse(int N, int radix) {
  25. String s = new StringBuilder(Integer.toString(N, radix)).reverse().toString();
  26. return Integer.parseInt(s, radix);
  27. }
  28. private static boolean isPrime(int N) {
  29. if (N <= 1) {
  30. return false;
  31. }
  32. boolean flag = true;
  33. for (int i = 2; i <= Math.sqrt(N); ++i) {
  34. if (N % i == 0) {
  35. flag = false;
  36. break;
  37. }
  38. }
  39. return flag;
  40. }
  41. }