1. 程式人生 > >PAT——1013. 數素數

PAT——1013. 數素數

正整數 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/1013
7 * @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= new
int[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. 數素數