BitTigerio 2017-12-04
令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; } }