资源描述
求素数公式公式之比较
李君池
内容提要
“李君池求素数公式”的诞生,完美地解决了“找出好的求素数公式”这一“世界难题”。虽然从古至今,在数论领域人们创造了若干个“求素数公式”,但没有一个“好的”“求素数公式”能让数论工作者用起来得心应手。为了让读者朋友深刻感受“李君池求素数公式”的出色与完美,文章列举了“埃拉托斯特尼筛法”、“素数定理”、“素数生成公式”以及“素数计算公式”等几个著名的“求素数公式”与之相比较。对于这几个人人敬仰的公式,本文没有作过多的点评,只是以展示为主,主要目的是让读者朋友们来评价“李君池求素数公式”与这几个著名公式相比较时的孰优孰劣。
关键词
李君池求素数公式 埃拉托斯特尼筛法 素数定理 素数生成公式
素数计算公式
2000多年前欧几里德在证明素数无穷多时就埋下了寻求素数普遍公式的伏笔,以布劳维尔为首的直觉主义学派认为:“你没有给出第n个素数是如何构造的,就不能算是好的证明”。2000多年来,数论学最重要的一个任务,就是寻找素数普遍公式,为此,一代又一代数学精英,耗费了巨大的心血,始终未获成功。黎曼曾想用他的ζ函数数的“零点”来逼近素数普遍公式,至今未获成功。也有人反向思考,用素数普遍公式逼近“零点”来解决黎曼猜想。希尔伯特在1900年的国际数学家大会上说:对黎曼公式进行了彻底讨论之后,或许就能够严格解决哥德巴赫问题和孪生素数问题。实际在哲学上,只要有一个明确的定义,就应该有一个公式。
一、李君池求素数公式
自“世界上第一个求素数公式”一文成稿之后,我查阅了很多数论中有关“求素数公式”方面的著作及相关文章,特别是在互联网上,我搜索查寻了大量的关于“求素数公式”的内容,发现:至今还没有一个“好的”“求素数公式”的出现。“李君池求素数公式”确实无愧于当今“世界上第一个求素数公式”这一称号。她的诞生能否会给整个数论领域带来变化和变革,对此,我充满了期待和自信;人们能否深刻理会、理解“李君池求素数公式”中所蕴含的、丰富的内涵,人们在数论研究中是否会逐步推广、采用、利用“李君池求素数公式”来解决相关的数论问题,对此,我拭目以待。本人在自我可能的范围内将自身的公式与多年来所产生的一些具有代表性的“求素数公式”相比较,自我觉得:“李君池求素数公式”完美的解决了“找出求素数公式”这一“世界难题”。如果说自我评价有“王婆卖瓜自卖自夸”的嫌疑,那么,本文的写作目的就是要让读者朋友们来评价“李君池求素数公式”与其他公式相比较时的孰优孰劣。
由于“李君池求素数公式”刊载在上一个年度的文章中,很多读者朋友没能看到前文,现在,我们将这个公式再作简略的介绍,以便于下文的比较。同时,也给没能看到那篇文章的朋友对这个公式有所了解。
公式1、李君池求素数个数公式:
在n与T之间素数的个数可用如下公式求得:
式中:,,当的值不是整数时,取,而、......、表示在符合要求的范围内统计乘积的个数(凡重复的数字仅保留最初出现的那一个),与乘积的大小无关。
公式2、李君池求素数数值公式:
在n与T之间的所有素数的数值同样可以用这一公式求得:
式中:表示之间的所有素数,表示之间的奇数,表示之间的所有奇合数。
在个奇数中,分别减去、......、个奇合数,即可得到n与T之间的所有素数。
以上这两个求素数的公式,第一个可以求出n与T之间所有素数的个数;第二个可以一个不漏地写出n与T之间所有素数的数值。完成了这两方面的内容,这就完美地建立起了“自然数中的求素数公式”,她彻底回答了“在所有自然数列中,素数的分布并不遵循任何有规则的模式”;“素数本身的分布呈无序性变化”等一系列与素数相关的问题。由于2000多年来,人们还没有找到一个“求素数的公式”,所以,我们将以上这两个本质相同的公式统称为“世界上第一个求素数公式(李君池求素数公式)”。具体内容可以参见我的《世界上第一个求素数公式》一文,该文刊登在《新课程》2012年第12期上。
二、数论中对“求素数公式”的要求
素数是自然数中最重要的概念,是自然数的基本粒子,两千年以来,数论学家最重要的任务就是寻找一个可以产生所有素数的公式。为此,人们耗尽了巨大心血,始终没有成功。几千年来,数学家们一直在寻找这样的一个公式,一个能求出所有素数的公式;但直到现在,谁也未能找到这样一个公式,而且谁也未能找到证据,说这样的公式就一定不存在;这样的公式存不存在,也就成了一个著名的数学难题。那么,人们所期待的素数公式究竟有哪些特点呢?
在维基百科上,关于素数公式,是这样描述的:“素数公式,在数学领域中,表示一种能够仅产生素数的公式。即是说,这个公式能够一个不漏地产生所有的素数,并且对每个输入的值,此公式产生的结果都是素数。由于素数的个数是可数的,因此一般假设输入的值是自然数集(或整数集及其它可数集)。迄今为止,人们尚未找到易于计算且符合上述条件的素数公式,但对于素数公式应该具备的性质已经有了大量的了解。”(见《维基百科.素数公式》条目)
从中可以看出,对于素数公式,人们有着这样的期待:1、这个公式必须是“一种能够仅产生素数的公式”;2、“这个公式能够一个不漏地产生所有的素数”;3、“对每个输入的值,此公式产生的结果都是素数”;4、“输入的值是自然数集(或整数集及其它可数集)”;5、这个公式还必须是“易于计算且符合上述条件的”。以上这五条要求是紧密联系的、完整的、不可分割的,离开了其中的一条,则不符合人们所期待的要求。
而《李君池求素数公式》则完全符合上述五条要求。不仅如此,本人所创立的求素数公式还具备简单易学、适合于普及与推广、运用公式能解答相关的数论难题和能广泛运用于科研、生产各个领域等特点。这里,就普及与推广举一个小例子。
例:求50到100之间有多少个素数?运用“李君池求素数个数公式”,解得
这里,我们很容易就求出了50到100之间有10个素数。并且,我们还可以运用“李君池求素数数值公式”一个不漏地写出这十个素数的数值来,它们是:53 59 61 67 71 73 79 83 89 97。
当然,我们还可以举出更多较大的例子来进行验证,这里就不再列举了。
在《李君池求素数公式》诞生之前,人们求素数普遍采用的是埃拉托斯特尼创造的一种筛法。其主要内容是:
公元前300年,古希腊的埃拉托斯特尼创造了一种筛法,可以产生任意大的数以内的全部素数:要得到不大于某个自然数n的所有素数,只要在2—n中将不大于素数的倍数全部划去即可。
其筛法可以总结为:
1、如果n是合数,则它有一个因子d满足1<d≤。
2、若自然数n不能被不大于任何素数整除,则n是一个素数。(这句话本身就是一个公式。这个公式可以一个不漏地产生所有素数,而不会混入一个合数)。
如果把2的汉字内容等价转换成为英语字母表示,即:
(1)
其中 表示顺序素数2,3,5,....。≠0。
即n≠,,...,形。若,则n是一个素数。
我们可以把(1)式内容等价转换同余式组表示:
(2)
由于(2)的模,,..., 两两互素,根据孙子定理(中国剩余定理)知,对于给定的,,...,(2)式在...范围内有唯一解。
例如: k=1时,,解得n=3,5,7。求得了(3,3²)区间的全部素数。
k=2时,,解得n=7,13,19;
解得n=5,11,17,23。求得了(5,5²)区间的全部素数。
k=3时
31
7,37
13,43
19
11,41
17,47
23
29
求得了(7,7²)区间的全部素数。 仿此下去可以一个不漏地求出给定数以内的全部素数。
2000多年来,数论中几乎所有重大问题都与埃拉托斯特尼筛法有关。这里,我们不去评价“埃拉托斯特尼筛法”的优劣,因为她在长期以来的数论研究中立下的汗马功劳实在是太多了,我们只能对她充满敬意。但是,“埃拉托斯特尼筛法”毕竟太古老了,其中的缺点是显而易见的,终将要被新的求素数公式所取代,终将要退出历史的舞台,这是不以人的意志为转移的。
现代有一些数学家们将“埃拉托斯特尼筛法”加以改进,取得了一些成效,但大多也只是在原来的“筛子”上修修补补而已,也有一些数学家想将这个“筛子”改造成一个较为简洁的“求素数公式”,并且在书本上和网上也能查到一些成果,但由于受到老公式的束缚,因此都还没有能跳出老公式的框框,所以,收效并不明显。关于“埃拉托斯特尼筛法”的改进,这里,就不再列举了。
三、对三个“求素数公式”的介绍
1、素数定理:
当我们在寻求“求素数公式”之时,除了“埃拉托斯特尼筛法”之外,很多人想到的是“素数定理”。人们试图通过对素数定理的研究、证明,找到素数的出现规律,更进一步想由此而找出一个“求素数公式”来。其实,想通过“素数定理”找到“求素数公式”,这本身就是一个误区,素数定理只能是描述素数的大致分布情况,是不可能由此而得到“求素数公式”的。
下面,是对素数定理的描述:一个个地看,素数在正整数中的出现没有什么规律。可是总体地看,素数的个数竟然有规可循。对正实数x,定义π(x)为不大于x的素数个数。数学家找到了一些函数来估计π(x)的增长。以下是第一个这样的估计。π(x)≈x/ln x 其中ln x为x的自然对数。上式的意思是:当x趋近于∞,π(x) 和x/ln x的比趋近于1(注:该结果为高斯所发现)。但这不表示它们的数值随着x增大而接近。
在证明素数定理的过程中,黎曼提出了一个论断:Zeta函数的零点都在直线Res(s) = 1/2上。他在作了一番努力而未能证明后便放弃了,因为这对他证明素数定理影响不大。但这一问题至今仍然未能解决,甚至于比此假设简单的猜想也未能获证。由此,想通过对“素数定理”的证明来找到“求素数公式”的想法,只能是一个远大的理想,是一种超越现实的理想状态,在黎曼猜想没有得到证明之前,其想法本身就是错误的。连希尔伯特都说:对黎曼公式进行了彻底讨论之后,或许就能够严格解决哥德巴赫问题和孪生素数问题。
在“百度百科”上,打开“素数公式”网页,除了看到“素数定理”之外,还能看到这样一个“素数生成公式”:
2、素数生成公式:
① P,!(PP,PPP…)
② Pn# * (1,2,…,(P(n+1)-1)/2) + (-P(Pn#/2),…,-P(n+1),-1,1,P(n+1),…,
P(Pn#/2)), !(P(n+1)+ * (P(n+1)+ ,P(n+1)+… )
公式说明: Pn# 为n个素数值的阶乘。
(1,2,…,(P(n+1)-1)/2) 为遍历到等于((下个素数值减1)除2的值)为止。(-P(Pn#/2),…,-P(n+1),-1,1,P(n+1),…,P(Pn#/2)) 为遍历。
P(Pn#/2)为遍历到小于(阶乘Pn#值)除2值的一个素数。
P 为素数,!(PP,PPP…)、!(P(n+1)+ * (P(n+1)+ ,P(n+1)+… )皆为非素数。 P(n+1)+ 为下个或下个更大的素数。
(PP,PPP…)、!(P(n+1)+ * (P(n+1)+ ,P(n+1)+… )皆为遍历所以2个或2个以上素数的相乘。
(P(n+1)+ *(P(n+1)+,P(n+1)+…) 遍历乘积值不大于Pn# /2为止。
对于这样一个“素数生成公式”,给人的第一印象就是繁琐,用如此繁琐的“生成公式”去“生成”另一个或另几个稍微大一点的“素数”,应该只是“无奈之举”。如果将此公式输入电脑,或许能够较快地求出所需要的素数来,但离开了电脑,只要有一个稍稍微好一点的“求素数公式”,是谁也不会再用它的。
3、素数计算公式:
下面,我们再来看看“百度空间”上给我们介绍的另一个“素数计算公式”:
素数计算公式分为伪公式和公式。素数计算伪公式:它适应所有素数的表达,如果用它来计算素数,计算出来的数字还需要进行验算;素数计算公式,即计算出来的数字,就是素数,不需要进行验算。
(1)、素数计算伪公式:
素数伪公式1:在排除特殊素数2和5的前提下,素数与其它素数的乘积加上或减去2,所得的两个数,除去尾数是5的数字后,再将剩余的数开平方,用剩余的数除以小于该数平方根的素数,如果都除不尽,那么,该剩余的数就是素数。
素数伪公式2:在排除特殊素数2和5的前提下,从最小素数3开始,连续素数的乘积加上或减去2的N次方,把所计算的得数,除去尾数是5的数字后,再将剩余的数分别开平方,用剩余的数除以小于该数平方根的素数,如果都除不尽,那么,它就都是素数。比如说:3×7±2,3×7×11±2,3×7×11×13±2,3×7×11×13×17±2……等等。
从这两个公式来看,虽然都比梅森素数公式遗漏的素数少,但是,还是有遗漏,为了不使素数遗漏,只能是用上3N±2,但说穿了,这哪里是什么公式,完全是除了是3的倍数的奇数外,对其它奇数进行全面排查。当然对于素数来说是一个不漏的。
我们无需评价“素数计算伪公式”的优劣,因为,它本身只是一个伪“素数公式”而已,作为一种思考问题的方法,只可以让大家“练练笔”,是不可能登上大雅之堂的。
(2)、素数计算公式:
素数计算公式是在排除特殊素数2和5的前提下,计算自然数M之内有多少素数及具体素数的公式,即M≥7。具体步骤如下:
M内有多少个奇数:4M/10-1+M的尾数奇数个数,减1为奇数1不参与,4M/10取整数。
素数3的删除数:M/3
其余单一素数的删除数:素数7的删除数,M/7≈N,为7—N的素数个数;
素数11的删除数:M/11=N1,为11—N1的素数个数;
素数13的删除数:M/13=N2,为13—N2的素数个数;……。
多个素数的删除个数:从素数7开始进行计算,多个素数之间的积,在M之内的。
素数个数=奇数个数-上面所有的删除个数+2。这里加上的2为特殊素数2和5。
具体的素数计算,只需要把上面的方法,奇数进行实际排列,删除数该乘的一个一个乘出来,进行具体删除后,剩余的数字就是素数。(见互联网《百度空间》)
应该承认,这个“素数计算公式”和“李君池求素数公式”是最为接近的,在本质上,它们是相通的。但该“素数计算公式”还没有成型,离写成一个完整的公式还有很大的差距,最多也还只是处在一种描述的阶段,且有许多值得修改和改进的地方。根据我的运用,用这个“计算公式”来寻找素数或者是来求素数,将是非常麻烦的,当数字在很小的时候尚可,数字稍一增大,就无从下手了,要想求得较大的素数,其计算公式甚至还不如埃拉托斯特尼筛法。那么,“李君池求素数公式”是否是从这个“公式”演变进化而来的呢?当然不是,“李君池求素数公式”产生的灵感来源于“自然数圆形排列图”。“自然数圆形排列图”里有着无穷无尽的宝藏等待着我们去继续发掘,本文不再赘述。
最后,还是让我们通过一道考题来看看“李君池求素数公式”在运用中的强大优势吧。
考题:写出900至1000之间的全部素数。
解:为了在考试中加快计算速度,我们可采用简洁的方式:首先写出900至1000之间的所有不能被3和5整除的奇数,共有26个,它们是:
901 907 911 913 917 919 923 929 931 937 941 943 947
949 953 959 961 967 971 973 977 979 983 989 991 997
要在这26个数中找出哪些是素数,我们可以用“李君池求素数数值公式”来寻找,对于公式:
1、 取的数值为901至999;
2、 的数值为49个(因为要求的数是26个,所以这一过程可以省略);
3、公式中,H后面的内容为需要统计的数值;
4、因为已知的数字都不能被3和5整除,所以再省略;
5、从开始计算,将得到的数值记录下来,与这26个数字比较,是合数的划去,剩下的没有划去的即为素数。
6、计算过程如下:
7×131=917, 7×133=931, 7×137=959 , 7×139=973,
11×83=913, 11×89=979, 13×71=923 , 13×73=949,
17×53=901, 23×41=943, 23×43=989 , 31×31=961。
现在,在这26个数中划去这12个合数,剩下的14个数就是素数。它们是:
907 911 919 929 937 941 947 953 967 971 977 983 991 997 。
即,在900至1000之间共有素数14个。
在这个计算中,仅仅只用了12道算式,就将900至1000之间这14个素数全部找了出来,平均每个素数所用的计算算式只有0.85道,这是到目前为止所有的“求素数公式”都是不可能做到的。如果有人能够用更为简洁的方法或者是更加强大的素数计算公式能够超越本公式、本方法的话,敬请公诸于世,让世人与之共同分享。
7
展开阅读全文