题目
编写一个独立的判素函数 is_prime,在主程序中遍历指定范围 [2, n],批量输出该范围内的所有素数。
输入格式:一行输入一个正整数 n(n ≥ 2)。
输出格式:按升序输出 2 到 n 之间的所有素数,以空格分隔,末尾换行。
数据范围与约定:2 ≤ n ≤ 2000。
思路与算法
1. 逻辑分层解耦
将素数判定提炼为纯函数 int is_prime(int x),主程序只关注区间循环调度与输出排版,极大降低代码复杂度。
2. 试除法优化
函数内部对每个数检验 i * i ≤ x,保证单次检验复杂度为 O(√x)。
完整程序
import java.util.Scanner;
public class Main {
// 独立素数判断方法
public static boolean isPrime(int x) {
if (x < 2) return false;
for (int i = 2; (long) i * i <= x; i++) {
if (x % i == 0) return false;
}
return true;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int start = sc.nextInt();
int end = sc.nextInt();
for (int i = start; i <= end; i++) {
if (isPrime(i)) {
System.out.println(i);
}
}
}
}运行示例
输入:
2 10输出:
2
3
5
7