PAT——1013. 数素数

令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<br /><br /><br /><br />
package com.hone.basical;
 
 import java.util.Scanner;
 
 /**
  * 原题目:https://www.patest.cn/contests/pat-b-practise/1013
  * @author Xia
  * 下面提供改进版本(成功解决超时问题)
  */
 
 public class basicalLevel1013CountPrimeNumImprove{  
     public static void main(String[] args){
         Scanner input = new Scanner(System.in);
         int m = input.nextInt();
         int n = input.nextInt();
         int[] nums= new int[n+1];
         nums[0] = 2;
         int k = 0;
         for (int i = 3,j=1; k < n; i+=2) {
             if(isPrime(i)){
                 nums[j++] =i; 
                 k++;
             }
         }
         for (int i = m-1; i < n; i++) {
             System.out.print(nums[i]);
             if(((i+2-m)%10 ==0)||i==n-1){
                 System.out.println();
             }else{
                 System.out.print(" ");
             }
         }
     } 
     
     //判断a是否为素数
     public static boolean isPrime(int a){
         boolean isprime = true;
         for (int i = 2;i <= Math.sqrt(a); i++) {
             if(a%i == 0){
                 isprime = false;
                 break;
             }
         }
         return isprime;
     }
     
 }

相关推荐