【PAT甲级 素数判断 进制转换】1015 Reversible Primes (20 分) Java版 4/4通过
生活随笔
收集整理的這篇文章主要介紹了
【PAT甲级 素数判断 进制转换】1015 Reversible Primes (20 分) Java版 4/4通过
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
思路:
為了提高效率,判斷素數采用打表的方式
先計算100000以內的所有素數,然后如果要判斷一個數是否為素數的話,直接與表中比對
題目中的意思是:
首先,判斷一個數N1是否為素數
如果N1是素數,把這個數以D進制的方式轉換為N2
然后將N2翻轉,(操作上)再把N2轉化回十進制(實際上進制不影響素數的判斷),判斷N2是否為素數
如果是,輸出Yes,否則輸出NO
筆記
- 素數與進制的關系
素數是根據能不能整除定義的,是否素數與進制無關
十進制的素數和8進制、4進制的素數在數值大小上是一樣的
- 將一個數字翻轉
- Java封裝的進制轉換
代碼
import java.util.Arrays; import java.util.Scanner;//素數是根據能不能整除定義的,是否素數與進制無關。 public class Main {public static void main(String[] args) {// 打表10^5// 如果是true,循環設置其倍數為false 如果為false 跳過boolean[] isPrime = new boolean[100001];Arrays.fill(isPrime, true);isPrime[0] = false;isPrime[1] = false;// 寫表for (int i = 2; i <= 100000; i++) {if (isPrime[i]) {for (int j = i * 2, t = 2; j <= 100000; j = i * t, t++) {isPrime[j] = false;}}}Scanner sc = new Scanner(System.in);while (sc.hasNext()) {int n1 = sc.nextInt();// reversible?if (n1 < 0) break;int d = sc.nextInt();// radixif (isPrime[n1]) {// 正序是素數String str = Integer.toString(n1, d);// d進制轉換StringBuilder sb = new StringBuilder();str = sb.append(str).reverse().toString();// 轉換后逆序str = Integer.toString(Integer.parseInt(str, d));// 轉化回10進制int n2 = Integer.parseInt(str);if (isPrime[n2]) {System.out.println("Yes");} else {System.out.println("No");}} else {System.out.println("No");}}} }總結
以上是生活随笔為你收集整理的【PAT甲级 素数判断 进制转换】1015 Reversible Primes (20 分) Java版 4/4通过的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 银联高校极客挑战赛 初赛 第一场、第二场
- 下一篇: 【Java爬虫】爬取网页中的内容,提取其