最快篩素數

篩法(sieve)是一種篩選素數的方法,最早由古希臘數學家埃拉托斯特尼(Eratosthenes)提出,因此這種方法也稱為埃拉托斯特尼篩法。以下是埃拉托斯特尼篩法的概述:

  1. 首先,我們建立一個包含從2到最大考慮範圍的數字(例如,如果我們考慮到1000,則從2到999的所有數字)的列表。

  2. 從列表的開始(即從2開始),我們找到第一個素數,然後將其從列表中刪除(因為我們已經找到了一個素數,所以它的所有因數都比它小,因此它們已經被從列表中刪除)。

  3. 接著,我們從列表中找到下一個未被刪除的數字(即下一個素數候選者),然後檢查它是否是素數。如果是素數,則將其從列表中刪除;如果不是素數(即它能夠被某個小於它的素數整除),則將其所有因數從列表中刪除。

  4. 重複步驟3,直到列表中的所有數字都被刪除或只剩下素數。

埃拉托斯特尼篩法是最快的已知篩選素數的方法,它的時間複雜度是O(N log log N),其中N是最大考慮範圍。這種方法對於篩選小範圍內的素數非常有效,例如篩選1000以內的素數。對於更大的範圍,可以使用更高效的算法,例如Miller-Rabin素數測試或AKS素數測試。