• 1015. Reversible Primes (20)


    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
    -2
    

    Sample Output:

    Yes
    Yes
    No

    思路:先说一下题目的意思,判断该十进制数N在D进制下的反转再转为十进制是否是质数,比如sample中的23在二进制的反转就是11101(本来是10111),再转为10进制就是29,是质数。

    所以我们要做的就是先把N转为D进制表示,反转,再转回十进制进行判断。

     1 import java.math.BigInteger;
     2 import java.util.*;
     3 
     4 public class Main {
     5 
     6     private static int revInRadixD(int num, int D) {
     7         StringBuilder rev = new StringBuilder();
     8         int shang = num;
     9         while (shang != 0) {
    10             rev.append(shang % D);
    11             shang /= D;
    12 
    13         }
    14         int result = 0;
    15         int len = rev.length();
    16         for (int i = 0; i < len; i++) {
    17             result += (rev.charAt(i) - '0') * Math.pow(D, len - 1 - i);
    18         }
    19         return result;
    20     }
    21 
    22     private static boolean isPrime(int num) {
    23         if (num < 2) return false;
    24         for (int i = 2; i <= Math.sqrt(num); i++) {
    25             if (num % i == 0) {
    26                 return false;
    27             }
    28         }
    29         return true;
    30     }
    31 
    32     public static void main(String[] args) {
    33         Scanner in = new Scanner(System.in);
    34         while (in.hasNext()) {
    35             int N = in.nextInt();
    36             if (N < 0) return;
    37             int D = in.nextInt();
    38             boolean isPrime = isPrime(N) && isPrime(revInRadixD(N, D));
    39             System.out.println(isPrime ? "Yes" : "No");
    40         }
    41 
    42     }
    43 }
  • 相关阅读:
    spring
    google-c-style
    process想停就停,真爽
    mytop
    Java 图片设置圆角(设置边框,旁白)
    当setTimeout遇到闭包
    FreeMarker辅助
    ImageIO.wtrie生成jpg图片质量损失方案:BufferedImage生成jpg图片文件流
    从BufferedImage到InputStream,实现绘图后进行下载(生成二维码图片并下载)
    使用Javascript 实现类
  • 原文地址:https://www.cnblogs.com/BJUT-2010/p/5576654.html
Copyright © 2020-2023  润新知