题目内容:
令 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
结尾无空行
Java代码实现:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
int n = sc.nextInt();
int num = 0;
for(int j = 2;;j++)
{
if(isPrimeNum(j))
{
num++;
if(num >= m && num <= n)
if((num-m+1)%10 == 0 || num == n)
System.out.println(j);
else
System.out.print(j + " ");
}
if(num == n)
break;
}
}
public static boolean isPrimeNum(int j) {
// for (int i = 2; i <= Math.sqrt(j); i++)// 用Math.sqrt()开根号求j是否为素数,加快运行速度
// {
// if (j == 2)
// return true;
// if (j % i == 0)
// return false;
// } //注意:这种方式求素数会超时
//应使用素数筛选法,是用了空间换了时间,不过现在来说,时间更加重要一些,所以素筛还是被广泛运用的。
if(j==1){
return false;
}
if(j%2==0&&j!=2){
return false;
}
for(int i=3;i<=Math.sqrt(j);i+=2){
if(j%i==0){
return false;
}
}
return true;
}
}



