题目就不写了有链接 看上面
解题思路:
- 写一个判断素数的方法(尽量高效)
- 从i=2开始用while遍历所有整数,如果为素数count++
- 计数器count在N到M之间时就打印出素数
以下代码在PTA还有一个测试点运行超时,希望大家帮忙看看,谢谢
import java.util.Scanner;
public class CountPri {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int M = sc.nextInt();
int N = sc.nextInt();
int i = 2;//通过i++查找素数
int count = 0; //计数器到第N个素数时可以结束循环
int k = 0;//数组索引
// 使用死循环找出M-N的素数并打印
while (true) {
if (isPrimeNumber(i)) {
count++;
if (count >= M && count <= N) {
if ((k + 1) % 10 == 0) {
System.out.println(i);
} else if (k == N - M) {
System.out.println(i);//最后一个数后不能出现空格
} else {
System.out.print(i + " ");
}
k++;//以10个一行输出素数
}
if (count > N) {
break;
}
}
i++;//遍历所有正整数找素数
}
}
//判断是否为素数
public static boolean isPrimeNumber(int i) {
for (int j = 2; j <= Math.sqrt(i); j++) {
if (i % j == 0) {
return false;
}
}
return true;
}
}

京公网安备 11010502036488号