PAT乙級-1013 數素數
阿新 • • 發佈:2021-11-22
令 P**i 表示第 i 個素數。現任給兩個正整數 M≤N≤104,請輸出 P**M 到 P**N 的所有素數。
輸入格式:
輸入在一行中給出 M 和 N,其間以空格分隔。
輸出格式:
輸出從 P**M 到 P**N 的所有素數,每 10 個數字佔 1 行,其間以空格分隔,但行末不得有多餘空格。
輸入樣例:
5 27
結尾無空行
輸出樣例:
11 13 17 19 23 29 31 37 41 43
47 53 59 61 67 71 73 79 83 89
97 101 103
結尾無空行
程式碼:
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int m = sc.nextInt(); int n = sc.nextInt(); int len = n - m + 1; int x = 0; for(int i = test1(m);len > 0 ; i++){ if(test(i)){ x++; if(--len != 0){ if(x % 10 != 0) System.out.print(i + " "); else System.out.println(i); }else{ System.out.print(i); } } } } //找到第m個素數 public static int test1(int m){ int i; for( i = 2; m > 0; i++){ if(test(i)) m--; } return --i; } //判斷一個屬是否是素數 public static boolean test(int n){ for(int i = 2; i < (int)Math.sqrt(n) + 1; i++){ if(n % i == 0)return false; } return true; } }