📜  埃拉托色尼筛 - Java (1)

📅  最后修改于: 2023-12-03 15:37:48.179000             🧑  作者: Mango

埃拉托色尼筛 - Java

埃拉托色尼筛算法(Eratosthenes sieve)是一种简单有效的寻找素数的方法。本文将介绍如何用Java实现埃拉托色尼筛算法。

算法原理

埃拉托色尼筛算法的基本思想是先把从2开始的连续自然数都标上号,然后从2开始,将其倍数(除了2以外)都打上“非素数”的标记,再到下一个为标记的数,重复操作。最后未被标记的就是素数。

代码实现

下面是Java实现的代码,使用一个布尔数组表示每个自然数是否为素数。

public static void eratosthenesSieve(int n) {
    boolean[] isPrime = new boolean[n+1];
    Arrays.fill(isPrime, true);
    isPrime[0] = false;
    isPrime[1] = false;
    for (int i = 2; i * i <= n; i++) {
        if (isPrime[i]) {
            for (int j = i * i; j <= n; j += i) {
                isPrime[j] = false;
            }
        }
    }
    for (int i = 2; i <= n; i++) {
        if (isPrime[i]) {
            System.out.print(i + " ");
        }
    }
}
使用示例
public static void main(String[] args) {
    int n = 30;
    eratosthenesSieve(n); // 输出素数: 2 3 5 7 11 13 17 19 23 29
}
总结

埃拉托色尼筛算法是一种简单有效的素数寻找方法,其代码实现也容易理解。使用该算法可以在较短的时间内寻找数值范围内的素数,对于进行一些数论运算或质因数分解等操作是非常有帮助的。