首頁 > 後端開發 > C++ > 在 C# 或 Java 中產生素數最優雅的方法是什麼?

在 C# 或 Java 中產生素數最優雅的方法是什麼?

Mary-Kate Olsen
發布: 2025-01-13 10:43:43
原創
434 人瀏覽過

What's the Most Elegant Way to Generate Prime Numbers in C# or Java?

追求優雅:C#或Java素數產生的最佳實踐

素數生成一直是程式設計師長期探索的課題,如何在速度和程式碼清晰度之間取得平衡,成為了演算法設計的關鍵。本文探討在C#或Java中生成質數的優雅方法。

改良的埃拉托色尼篩法

埃拉托色尼篩法是尋找質數的常用方法之一。透過迭代去除每個質數的倍數,我們可以篩選所有非素數。以下程式碼是對標準篩法演算法的改進:

<code class="language-c#">public static List<int> GeneratePrimes(int limit)
{
    if (limit < 2) return new List<int>();

    var primes = new bool[limit + 1];

    for (int i = 2; i * i <= limit; i++)
    {
        if (!primes[i])
        {
            for (int j = i * i; j <= limit; j += i)
            {
                primes[j] = true;
            }
        }
    }

    var result = new List<int>();
    for (int i = 2; i <= limit; i++)
    {
        if (!primes[i])
        {
            result.Add(i);
        }
    }
    return result;
}</code>
登入後複製

基於LINQ的素數產生

另一種方法是利用LINQ的延遲計算特性。這段程式碼回傳一個無限的素數序列:

<code class="language-c#">public static IEnumerable<int> GeneratePrimesLINQ()
{
    yield return 2;
    yield return 3;

    var primes = new HashSet<int> { 2, 3 };

    for (int i = 5; ; i += 2)
    {
        if (!primes.Any(p => i % p == 0))
        {
            primes.Add(i);
            yield return i;
        }
    }
}</code>
登入後複製

方法選擇

選擇哪一種方法取決於特定的應用場景。改良的埃拉托色尼篩法在尋找固定數量的質數時效率很高,而基於LINQ的方法則提供了一個適合增量處理的惰性無限序列。最終,最優雅的解決方案是能夠清晰且有效率地滿足特定需求的方案。

以上是在 C# 或 Java 中產生素數最優雅的方法是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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