首頁 > 後端開發 > C++ > 如何使用埃拉托色尼篩法在 Java 中優雅地產生質數?

如何使用埃拉托色尼篩法在 Java 中優雅地產生質數?

Linda Hamilton
發布: 2025-01-13 06:42:42
原創
663 人瀏覽過

How Can I Elegantly Generate Prime Numbers in Java Using the Sieve of Eratosthenes?

Java中的埃拉托斯特尼篩法:優雅地產生素數

引言

素數生成是計算機科學的基本問題,有多種演算法可供選擇。其中,埃拉托斯特尼篩法以其簡潔性和效率而聞名。本文提供了一個優雅的Java實現,使用埃拉托斯特尼篩法產生前n個素數。

埃拉托斯特尼篩法

埃拉托斯特尼篩法是一種機率演算法,透過迭代消除素數的倍數來識別素數。它首先初始化一個布林標誌數組,每個標誌代表一個不超過指定限制的數字。然後,演算法從第一個質數2開始迭代遍歷數組,並將它的所有倍數標記為非素數。此過程持續進行,直到限制內的所有數字都被消除,只留下質數。

優雅的實現

埃拉托斯特尼篩法的優雅Java實作如下圖:

<code class="language-java">public static BitSet computePrimes(int limit) {
    final BitSet primes = new BitSet();
    primes.set(0, false);
    primes.set(1, false);
    primes.set(2, limit, true);
    for (int i = 2; i * i <= limit; i++) {
        if (primes.get(i)) {
            for (int j = i * i; j <= limit; j += i) {
                primes.set(j, false);
            }
        }
    }
    return primes;
}</code>
登入後複製

說明

此實作建立了一個BitSet,每個位元代表一個不超過指定限制的數字。最初,0和1被標記為非素數,其他所有數字都被標記為質數。

外循環從第一個質數2開始迭代遍歷數組。如果目前位置的位元被設定(表示它是素數),則內循環將該素數的所有倍數標記為非素數。此過程持續進行,直到限制內的所有數字都被消除。

最後,傳回包含質數的BitSet。

結論

這個Java實現的埃拉托斯特尼篩法展示了該演算法的優雅和簡潔性。它高效地產生素數,並具有清晰、合乎邏輯的結構。程式碼針對效能和易理解性進行了最佳化,對於需要素數產生器的程式設計師來說,它是一個寶貴的工具。

以上是如何使用埃拉托色尼篩法在 Java 中優雅地產生質數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板