令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 }
时间: 2024-11-05 16:11:59