题目

编写一个独立的判素函数 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