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;
}
}