埃拉托斯特尼篩法生成器(免費)- 質數一覽・第N個質數查詢

只需輸入上限N,即可使用埃拉托斯特尼篩法逐步視覺化生成質數一覽。除1至100早見表外,還支援最大100萬範圍及第100萬個質數等大序數的反向查詢,免費、無需註冊、瀏覽器內直接計算。

1〜100 的埃拉托斯特尼篩法(一覽表)

綠色格子為質數,其餘為被篩法排除的合數。

1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
71 72 73 74 75 76 77 78 79 80
81 82 83 84 85 86 87 88 89 90
91 92 93 94 95 96 97 98 99 100

1 既不是質數也不是合數,因此不上色。

埃拉托斯特尼篩法是什麼

埃拉托斯特尼篩法是以西元前3世紀希臘學者埃拉托斯特尼命名的、用來尋找質數的古典演算法。思路出奇地單純:從2開始依序考察,凡是尚未被劃掉的數就確定為質數,然後把它的所有倍數劃掉。先劃掉2的倍數,再劃掉餘下的3的倍數,接著是5的倍數——把這套操作重複到上限的平方根為止,沒被劃掉的數就全是質數。

本工具只要指定上限 N,就能產生最多到100萬的質數一覽。由於會逐步顯示篩除過程,您可以親眼追蹤演算法「用哪個質數、劃掉了哪些數」。 此外還支援「第N個質數是什麼」的反查,連第100萬這樣靠後的名次也能查到。所有計算都在瀏覽器中完成,輸入的數值不會被傳送到任何地方。

產生質數一覽的步驟

  1. 輸入上限 N 指定2以上、1,000,000以下的整數。先用100之類的小值試試,篩法的機制會更清楚。
  2. 查看質數個數與最大質數 會顯示 N 以下共有多少質數(π(N)),以及 N 以下最大的質數。
  3. 跟隨篩除的步驟 上限較小時,會逐階段顯示使用了哪個質數、劃掉了哪些數。
  4. 反查第N個質數 輸入名次即可求出對應該名次的質數。

用好本工具的小技巧

  • 埃拉托斯特尼篩法通過從 2 開始依次劃掉質數的倍數,能高效地列出 N 以內的全部質數。
  • 將上限 N 設為 400 以下時,可以逐步確認是哪個質數篩掉了哪些數。
  • 本工具支援「第1,000,000個質數是什麼」這類大序數的反向查詢,便於確認位數很大的質數是否存在。
  • 生成的質數一覽完全在瀏覽器本地計算,不會向伺服器傳送任何資料。

這些情境會用到

學習演算法

作為 O(n log log n) 複雜度的代表例子,它必定出現在教科書裡。邊看實際執行邊理解更牢固。

驗證自己的程式實作

可以把自己寫的篩法輸出與本工具比對,確認是否給出正確的質數序列。

觀察質數的分布

改變上限並觀察 π(N) 的成長,能體會質數定理所說的「大致遵循 N / log N」的傾向。

為密碼學話題做功課

RSA 等公開金鑰密碼依賴大質數。這是掌握質數密度的一個入口。

質數與篩法的術語

質數
除1與自身外沒有其他正因數的、2以上的自然數。1不算質數。
合數
不是質數的、2以上的自然數。篩法中被劃掉的正是這些數。
π(N)
表示 N 以下質數個數的函數,稱為質數計數函數。
篩除
給質數的倍數做記號並將其排除出候選的操作,演算法的名字正源於此。
為何到平方根即可
大於 N 平方根的質數的倍數,早已作為更小質數的倍數被劃掉了。
質數定理
π(N) 漸近於 N / log N 的定理,描述了質數變得稀疏的速度。

常見問題

這是相傳由西元前3世紀數學家埃拉托斯特尼提出的質數判定法:從 2 開始依次排列整數,機械地劃掉已發現質數的倍數,剩下的數便全部是質數。由於只需重複簡單操作,也非常適合用計算機實現。

由於本工具在瀏覽器內完成全部計算,上限設為最多 1,000,000。超出該範圍會大幅增加計算量,可能導致瀏覽器執行變慢。

根據質數定理估算第 N 個質數的大致上限,再在該範圍內執行埃拉托斯特尼篩法精確求出。支援最多查詢到第 1,000,000 個質數。

當結果數量較多時,只顯示前 1,000 個,其餘僅彙總顯示個數。逐步篩除過程的視覺化僅在上限為 400 以下時提供。
工具君

閒話 ― 為何2000年前的演算法至今仍在使用

埃拉托斯特尼篩法是現存最古老的質數生成演算法之一,相傳由西元前3世紀擔任亞歷山大圖書館館長的古希臘學者埃拉托斯特尼所創。兩千多年前發明的方法至今仍作為電腦科學的教材使用,足見這一演算法的簡潔與優美。

篩法的原理出人意料地簡單:從 2 開始依次排列整數,將尚未被劃掉的最小數確定為質數,再劃掉它的所有倍數。只需將這一操作重複到 √N,即可得到 N 以內的全部質數。相比逐一判斷單個數字是否為質數的試除法,若要一次性求出一覽表,篩法效率高得多。

尋找巨大質數的競賽至今仍在繼續,GIMPS(網際網路梅森素數大搜索)等分散式計算專案不斷發現位數超過千萬位的梅森素數。埃拉托斯特尼篩法本身並不用於發現如此巨大的質數,但其基本思想(機械地排除倍數)也是更高階的質數判定演算法的基礎。