首頁  >  文章  >  後端開發  >  如何有效率地映射一定範圍內的質數?

如何有效率地映射一定範圍內的質數?

Barbara Streisand
Barbara Streisand原創
2024-11-04 20:20:02267瀏覽

How to Efficiently Map Prime Numbers within a Range?

高效映射範圍內的素數

確定指定範圍內的素數是一項常見的程式設計任務。為了優化此任務的記憶體消耗,我們尋求一種演算法,該演算法可以創建最緊湊的資料結構來表示給定範圍(1, N] 的素數。

素數範圍映射的建議演算法

一般素數測試最有效的演算法是AKS 演算法,但是,出於有限範圍內的實際目的,經典O(sqrt(N)) 演算法的以下變體可以提供有效的解決方案:

def isprime(n):
    if n == 2 or n == 3:
        return True
    if n % 2 == 0 or n % 3 == 0:
        return False
    # Check prime divisors of the form 6k - 1 and 6k + 1
    i = 5
    w = 2
    while i * i <= n:
        if n % i == 0:
            return False
        i += w
        w = 6 - w
    return True

演算法分析

演算法依賴於這樣一個事實:所有大於3 的素數都是6k - 1 或6k 通過 1 的形式。以這種模式迭代潛在的素數,該演算法可以有效地識別非素數。有限時,基於費馬小定理實現偽素數測試是有效的,但是這種方法有範圍限制。此演算法是消除所有作為潛在素數的偶數。

以上是如何有效率地映射一定範圍內的質數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn