PAT——1013. 數素數
阿新 • • 發佈:2017-12-04
正整數 system nbsp 判斷 bsp asi 成功 str ()
令Pi表示第i個素數。現任給兩個正整數M <= N <= 104,請輸出PM到PN的所有素數。
輸入格式:
輸入在一行中給出M和N,其間以空格分隔。
輸出格式:
輸出從PM到PN的所有素數,每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
1 package com.hone.basical; 2 3 import java.util.Scanner; 4 5 /** 6 * 原題目:https://www.patest.cn/contests/pat-b-practise/10137 * @author Xia 8 * 下面提供改進版本(成功解決超時問題) 9 */ 10 11 public class basicalLevel1013CountPrimeNumImprove{ 12 public static void main(String[] args){ 13 Scanner input = new Scanner(System.in); 14 int m = input.nextInt(); 15 int n = input.nextInt(); 16 int[] nums= newint[n+1]; 17 nums[0] = 2; 18 int k = 0; 19 for (int i = 3,j=1; k < n; i+=2) { 20 if(isPrime(i)){ 21 nums[j++] =i; 22 k++; 23 } 24 } 25 for (int i = m-1; i < n; i++) { 26 System.out.print(nums[i]);27 if(((i+2-m)%10 ==0)||i==n-1){ 28 System.out.println(); 29 }else{ 30 System.out.print(" "); 31 } 32 } 33 } 34 35 //判斷a是否為素數 36 public static boolean isPrime(int a){ 37 boolean isprime = true; 38 for (int i = 2;i <= Math.sqrt(a); i++) { 39 if(a%i == 0){ 40 isprime = false; 41 break; 42 } 43 } 44 return isprime; 45 } 46 47 }
PAT——1013. 數素數