令 P**i 表示第 i 个素数。现任给两个正整数 M≤N≤104,请输出 P**M 到 P**N 的所有素数。
输入格式:
输入在一行中给出 M 和 N,其间以空格分隔。
输出格式:
输出从 P**M 到 P**N 的所有素数,每 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
结尾无空行
代码:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
int n = sc.nextInt();
int len = n - m + 1;
int x = 0;
for(int i = test1(m);len > 0 ; i++){
if(test(i)){
x++;
if(--len != 0){
if(x % 10 != 0)
System.out.print(i + " ");
else
System.out.println(i);
}else{
System.out.print(i);
}
}
}
}
//找到第m个素数
public static int test1(int m){
int i;
for( i = 2; m > 0; i++){
if(test(i))
m--;
}
return --i;
}
//判断一个属是否是素数
public static boolean test(int n){
for(int i = 2; i < (int)Math.sqrt(n) + 1; i++){
if(n % i == 0)return false;
}
return true;
}
}