到目前為止找到了多少個素數,是怎麼找到的?

勿忘幸福的味道

先回答第二個問題,怎麼找素數。

說出來可能大家會失望,現在尋找素數的方法主要還是古老的試除法和篩法。試除法用的比較少,篩法用的多且有很多變種。


試除法:

給一個整數n,判斷他是不是素數。用2除n,看能否整除;如果可以,繼續用3除n,用更大的素數除n,一直除到根號n。如果一直都無法整除,那n就是素數。如果有可以整除的,n就是合數。


篩法:

最早發明於公元前200年左右,發明人是古希臘的埃拉託斯特尼。大致思路就是,把數字都寫出來,把合數都劃掉。先用2除所有數,除盡的都劃掉;然後用3,然後5,再就是用下一個還“留在場上”的數字,一直到整組數都篩完。

之後會有一些改進方法,但都基於上述思想。比如,歐拉篩與簡易歐拉篩,增量式篩法,分段式篩法,輪式埃氏篩、輪式簡易歐拉篩、輪式分段埃氏篩等改進版方法。篩法是現在研究素數比較好的工具之一,陳景潤做出的“1+2”,張益唐給孿生素數做出的貢獻,都是依靠篩法為基礎得來的。


素數的總數是無限的。其證明也很簡單。

  1. 假設素數總數有限。

  2. 把所有素數乘起來,再+1,得到新的數,記為n

  3. n除以所有的素數,都會餘1

  4. 所以n也是素數,與之前題設矛盾

  5. 因此素數有無限多個。


迄今為止找到的最大的素數,是一個梅森素數:

2^77,232,917 − 1

這是一個有23,249,425位的巨大的數。

有好事的日本人,把這個最大的素數,一個數一個數印刷了出來,成了這本名字就叫《最大的素數》的書。這本書一共有719頁,有整整一寸厚,一本書裡沒別的,就是這個數字。


那麼到目前為止一共找到了多少素數呢?其實並沒有人統計過。原因在於,不超過一百位數(注意,是一百位數,指有一百個數字的數,不是百位)的素數太多了,而這麼短的素數又很好找,對於計算機來說簡直“遍地皆是”。一個一個尋找這些素數,可以說是又麻煩,又沒用的事情,所以也就沒人做了。這就好像,沒有人會費力氣數撒哈拉沙漠裡有多少粒沙子。


IvanZhu

這裡我介紹一種最高效的篩法。以自然數列為原始數列,首先篩掉2的所有整倍數。再以2後面第一個未被篩去的數3為模,篩去它與所有未過篩數的乘積,如3x3、3x5、3x7、3x9、3x11、……等等。再以最小的未過篩數為模,篩去它與所有未過篩數的乘積。如此反覆,你就可以篩選出全部的素數來,決不會多篩去一個數,也不會少篩去一個數。


分享到:


相關文章: