到目前为止找到了多少个素数,是怎么找到的?

勿忘幸福的味道

先回答第二个问题,怎么找素数。

说出来可能大家会失望,现在寻找素数的方法主要还是古老的试除法和筛法。试除法用的比较少,筛法用的多且有很多变种。


试除法:

给一个整数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、……等等。再以最小的未过筛数为模,筛去它与所有未过筛数的乘积。如此反复,你就可以筛选出全部的素数来,决不会多筛去一个数,也不会少筛去一个数。


分享到:


相關文章: