题目描述
令Pi表示第i个素数。现任给两个正整数M <= N <= 10000,请输出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
java1.7:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main3 {
private static Scanner input;
public static void main(String[] args) {
input = new Scanner(System.in);
int m=input.nextInt();
int n=input.nextInt();
findPrime(m, n);
}
private static void findPrime(int m,int n){
List<Integer> list = new ArrayList<>();
int index = 0;
int i=2;
while(index < n){
if(isPrime(i)){
list.add(i);
index++;
}
i++;
}
int temp = 0 ;
int cur = m-1;
while(true){
while(temp%10!=0 || temp ==0){
System.out.print(list.get(cur));
temp++;
cur++;
if(cur>=n)break;
if(temp%10!=0) System.out.print(" ");
}
temp=0;
if(cur>=n){
break;
}else{
System.out.println();
}
}
}
private static boolean isPrime(int i) {
if (i == 1)
return false;
else if (i == 2)
return true;
else if (i % 2 == 0)
return false;
else {
for (int n = 3; n <= (int) Math.sqrt(i); n++) {
if (i % n == 0) {
return false;
}
}
return true;
}
}
}
测试用例范围内最大耗时53ms,最大占用内存11188KB