词条 | 孪生素数 |
释义 | 所谓孪生素数指的就是这种间隔为 2 的相邻素数,它们之间的距离已经近得不能再近了,就象孪生兄弟一样。最小的孪生素数是 (3, 5),在 100 以内的孪生素数还有 (5, 7), (11, 13), (17, 19), (29, 31), (41, 43), (59, 61) 和 (71, 73),总计有 8 组。但是随着数字的增大,孪生素数的分布变得越来越稀疏,寻找孪生素数也变得越来越困难。那么会不会在超过某个界限之后就再也不存在孪生素数了呢? 概念介绍要介绍孪生素数,首先当然要说一说素数这个概念。 素数是除了 1 和它本身两个自然数之外没有其它因子的自然数。素数是数论中最纯粹、最令人着迷的概念。除了 2 之外,所有素数都是奇数 (因为否则的话除了 1 和它本身之外还有一个因子 2,从而不满足素数的定义),因此很明显大于 2 的两个相邻素数之间的最小可能间隔是 2。 素数本身的分布我们知道,素数本身的分布也是随着数字的增大而越来越稀疏,不过幸运的是早在古希腊时代,Euclid 就证明了素数有无穷多个 (否则今天许多数论学家就得另谋生路)。长期以来人们猜测孪生素数也有无穷多组,这就是与 Goldbach 猜想齐名、集令人惊异的简单表述和令人惊异的复杂证明于一身的著名猜想 - 孪生素数猜想: 质数公式得出:(Pn#+4)/2,(Pn#-4)/2等一定是质数!就有孪生质数在他的两边 Pn#是质数的阶乘 孪生素数猜想存在无穷多个素数 p, 使得 p+2 也是素数。 究竟谁最早明确提出这一猜想我没有考证过,但是一八四九年法国数学 Alphonse de Polignac 提出猜想:对于任何偶数 2k, 存在无穷多组以 2k 为间隔的素数。对于 k=1,这就是孪生素数猜想,因此人们有时把 Alphonse de Polignac 作为孪生素数猜想的提出者。不同的 k 对应的素数对的命名也很有趣,k=1 我们已经知道叫做孪生素数, k=2 (即间隔为 4) 的素数对被称为 cousin prime (比 twin 远一点),而 k=3 (即间隔为 6) 的素数对竟然被称为 sexy prime (这回该相信 “书中自有颜如玉” 了)!不过别想歪了,之所以称为 sexy prime 其实是因为 sex 正好是拉丁文中的 6。:-) 猜想的形式由英国数学家 Hardy 和 Littlewood 于一九二三年提出,现在通常称为 Hardy-Littlewood 猜想或强孪生素数猜想[注一]。这一猜想不仅提出孪生素数有无穷多组,而且还给出其渐近分布形式为: 2到x之间的积分算式,π2(x)~2{C2}∫dt/(lnt)^2,其中 π2(x) 表示小于 x 的孪生素数的数目, C2 被称为孪生素数常数(twin prime constant),其数值为: 0.660.....。2{C2}》1.32,∫dt/(lnt)^2≈x/(Ln(x))^2,x/(Ln(x))^2的数量可以转换成“同底幂的指数差”:e^(2^m)/(2^m)^2=e^(2^m)/2^(2m)≈e^(2^m-(0.69)*2m)≈2^(1.44*2^m-2m),或者: e^(10^m))/ (10^(2m))=10^{[(10^m)/Ln10]-2m}≈10^(0.434*10^m-2m),便于理解数量大小。 Hardy-Littlewood 猜想所给出的孪生素数分布的精确程度可以由下表看出: x 孪生素数数目 Hardy-Littlewood 猜想 100,000 1224 1249 1,000,000 8,169 8,248 10,000,000 58,980 58,754 100,000,000 440,312 440,368 10,000,000,000 27,412,679 27,411,417 很明显,Hardy-Littlewood 猜想的对孪生素数分布的拟合程度是惊人的。 如此精彩的拟合堪与自然科学史上 Adams 和 Leverrier 运用天体摄动规律对海王星位置的预言以及 Einstein 对光线引力偏转的预言相媲美,是理性思维的动人篇章。这种数据对于纯数学的证明虽没有实质的帮助,但是它大大增强了人们对孪生素数猜想的信心。 简单的定性分析顺便说一下,Hardy-Littlewood 猜想所给出的孪生素数分布规律可以通过一个简单的定性分析 “得到”:我们知道素数定理 (prime number theorem) 表明对于足够大的 x, 在 x 附近素数的分布密度大约为 1/ln(x),因此两个素数处于区间 2 以内的概率大约为 2/ln2(x)。这几乎正好就是 Hardy-Littlewood 猜想中的被积函数!当然其中还差了一个孪生素数常数 C2,而这个常数很显然正是 Handy 与 Littlewood 的功力深厚之处! 除了 Hardy-Littlewood 猜想与孪生素数实际分布之间的拟合外,对孪生素数猜想的另一类 “实验” 支持来自于对越来越大的孪生素数的直接寻找。就象对于大素数的寻找一样,这种寻找在很大程度上成为对计算机运算能力的一种检验,一九九四年十月三十日,这种寻找竟然导致发现了 Intel Pentium 处理器浮点除法运算的一个 bug,在工程界引起了不小的震动。 最大的孪生素数截至二零零二年底,人们发现的最大的孪生素数是: (33218925×2169690-1, 33218925×2169690+1) 这对素数中的每一个都长达 51090 位!许多年来这种记录一直被持续而成功地刷新着。 好了,介绍了这么多关于孪生素数的资料,现在该说说人们在证明孪生素数猜想上所走过的路了。 成果: 迄今为止在证明孪生素数猜想上的成果大体可以分为两类。第一类是非估算性的结果,这一方面迄今最好的结果是一九六六年由已故的我国数学家陈景润(顺便说一下,美国数学学会在介绍 Goldston 和 Yildirim 成果的简报中提到陈景润时所用的称呼是 “伟大的中国数学家陈”) 利用筛法 (sieve method) 所取得的。陈景润证明了:存在无穷多个素数 p, 使得 p+2 要么是素数,要么是两个素数的乘积。这个结果和他关于 Goldbach 猜想的结果很类似。目前一般认为,由于筛法本身的局限性,这一结果在筛法范围内很难被超越。 另一类结果的估算性Goldston 和 Yildirim 所取得的结果也属于这一类。这类结果估算的是相邻素数之间的最小间隔,更确切地说是: Δ := lim inf[(P(n+1)-Pn)/ln(Pn)] n→∞ 翻译成白话文,这个表达式定义的是两个相邻素数之间的间隔与其中较小的那个素数的对数值之比在整个素数集合中所取的最小值。很显然孪生素数猜想如果成立,那么 Δ 必须等于 0,因为孪生素数猜想表明 pn+1-pn=2 对无穷多个 n 成立,而 ln(pn)→∞,因此两者之比的最小值对于孪生素数集合 (从而对于整个素数集合也) 趋于零。不过要注意 Δ=0 只是孪生素数猜想成立的必要条件,而不是充份条件。换句话说如果能证明 Δ≠0 则孪生素数猜想就不成立,但证明 Δ=0 却并不意味着孪生素数猜想就一定成立。 素数定理对于 Δ 最简单的估算来自于素数定理。按照素数定理,对于足够大的 x, 在 x 附近素数出现的几率为 1/ln(x),这表明素数之间的平均间隔为 ln(x) (这也正是 Δ 的表达式中出现 ln(pn) 的原因),从而 (pn+1-pn)/ln(pn) 给出的其实是相邻素数之间的间隔与平均间隔的比值,其平均值显然为 1。平均值为 1,最小值显然是小于等于 1,因此素数定理给出 Δ≤1。 对 Δ 的进一步估算始于 Hardy 和 Littlewood。一九二六年,他们运用圆法 (circle method) 证明了假如广义 Riemann 猜想成立,则 Δ≤2/3。这一结果后来被被 Rankin 改进为 Δ≤3/5。但是这两个结果都有赖于本身尚未得到证明的广义 Riemann 猜想,因此只能算是有条件的结果。一九四零年,Erdös 利用筛法首先给出了一个不带条件的结果:Δ<1 (即把素数定理给出的结果中的等号部分去掉了)。此后 Ricci 于一九五五年, Bombieri 和 Davenport 于一九六六年,Huxley 于一九七七年, 分别把这一结果推进到 Δ≤15/16, Δ≤(2+√3)/8≈0.4665 及 Δ≤0.4425。 Goldston 和 Yildirim 之前最好的结果是 Maier 在一九八六年取得的 Δ≤0.2486。 在小数点后做文章Goldston 和 Yildirim 的结果把这一系列的努力大大推进了一步,并且 - 如果得到证实的话 - 将在一定意义上终结对 Δ 进行数值估算的长达几十年的征途,因为 Goldston 和 Yildirim证明了 Δ=0。当然如我们前面所说,Δ=0 只是孪生素数猜想成立的必要条件,而非充份条件,因此 Goldston 和 Yildirim 的结果离最终证明孪生素数猜想还远得很,但它无疑是近十几年来这一领域中最引人注目的结果。 一旦 Δ=0 被证明,人们的注意力自然就转到了研究 Δ 趋于 0 的方式上来。孪生素数猜想要求 Δ ~ [log(pn)]-1 (因为 pn+1-pn=2 对无穷多个 n 成立)。 Goldston 和 Yildirim 的证明给出的是 Δ ~ [log(pn)]-1/9,两者之间还有相当距离。但是看过 Goldston 和 Yildirim 手稿的一些数学家认为 Goldston 和 Yildirim 所用的方法明显存在改进的空间,也就是说对 Δ 趋于 0 的方式可以给出更强的估计。因此 Goldston 和 Yildirim 的证明其价值不仅仅在于结果本身,更在于它很有可能成为未来一系列研究的起点。这种系列研究对于数学来说有着双重的价值,因为一方面这种研究所获得的新结果是对数学的直接贡献,另一方面这种研究对 Goldston 和 Yildirim 的证明会起到反复推敲和核实的作用。现代数学早已超越了一两个评审花一两个小时就可以对一个数学证明做出评判的时代。以前四色定理和 Fermat 大定理都曾有过一个证明时隔几年 (甚至十几年) 才被发现错误的例子。因此一个复杂的数学结果能够成为进一步研究的起点,吸引其它数学家的参与对于最终判定该结果的正确性具有极其正面的意义。 本文到此就结束了,再过一个多月 (五月二十二日) 就是陈景润先生七十周年诞辰的日子。谨以本文纪念这位在数论领域中功绩卓著的中国数学家。 二零零三年四月六日写于纽约 -------------------------------------------------------------------------------- [注一] Hardy-Littlewood 于一九二三年提出的猜想共有两个, 其中第一个猜想又称为 k-tuple 猜想, 它给出了所有形如 (p, p+2m1, ... , p+2mk) (其中 0<m1<...<mk) 的素数 k-tuple 的渐进分布。 强孪生素数猜想只是 t-tuple 猜想的一部分。 孪生素数的简易证明因为, 大于3的素数存在于等差数列6N+1和6N+5之中。所谓孪生素数,即相差为2的两个素数叫孪生素数。即当6N+5的N为X,6N+1的N为X+1时,6X+5和6(X+1)+1都是素数时,即为孪生素数。又因为,人们已经证明了素数永远存在,那么,当6X+5和6(X+1)+1都是素数也永远存在,所以,孪生素数永远存在。 设所取的范围为M,当所取的范围≥13时,范围内的孪生素数组个数≥K(√M)/2。 式中的K=(9/7)*(15/13)*(21/19)*(25/23)*(27/25)*……*Y/(Y-2),Y为√M内的最大奇合数。 顺便说一下,相差4的孪生素数。也就是6N+1和6N+5所形成的孪生素数。这里的6N+1中的N与6N+5中的N相等时,6N+1和6N+5都是素数,叫做相差4的孪生素数。同理,人们已经证明了素数永远存在,所以,6N+1和6N+5都是素数也永远存在,应该以上面的孪生素数个数相当。 再说一下相差6的孪生素数,即6N+1与6(N+1)+1,6N+5与6(N+1)+5。为公差相同等差数列所形成的孪生素数。同理,人们已经证明了素数永远存在,所以,6N+1与6(N+1)+1,6N+5与(6N+1)+5都是素数也永远存在,应该有相差2的孪生素数个数的两倍。 孪生素数的直接寻找方法,敬请搜索《孪生素数的计算及证明》。该筛选方法,除了孪生素数3,5以外,不会漏掉任何一个孪生素数。因为,本文认为:孪生素数的起源是孪生素数5,7。后面所有的孪生素数都是孪生素数5,7的延伸。 -------------------------------------------------------------------------------- 补充内容二零零三年四月二十三日, Andrew Granville (University de Montreal) 和 Kannan Soundararajan (University of Michigan) 发现了 Goldston 和 Yildirim 证明中的一个错误。 截至目前, Goldston 和 Yildirim 已经承认、 但尚未能更正这一错误。 谢谢刘逢绥读者来信提醒我注意这一信息。 (2003-07-03) 对了,我有一点,虽然不能证明孪生素数有无穷多对,但可以帮助数学爱好者证明: 素数除了2以外都是奇数,而奇数除了【奇数*奇数】(或再加“*奇数”)以外都是素数,那么孪生素数有有限对的等价就是超出一个范围后每隔4或2就有一个是n个奇数的乘积。(参见“素数”) C语言代码#include <stdio.h> #include <math.h> bool isPrime(int num) { int i, n; n = (int)sqrt(num); //sqrt()开平方 //由于已经过滤掉所有偶数,所以2就不用判断了,直接从3开始 for(i = 3; i <= n; i++) { if(!(num % i)) return false; } return true; } int main() { int x,y,n,t; bool flag=0; scanf("%d%d",&x,&y); if(x > y) { t = x; x = y; y = t; } n = x > 3 ? x : 3; //已知素数中唯一的偶数是2,所以偶数中不存在双胞胎数字,这里做一个判断,偶数就减一 if(!(n % 2)) n++; for(;n <= y; n+=2) { if(isPrime(n)) { if(flag) { printf("[%d,%d]\", n - 2, n); } else { flag = true; } } else { flag=false; } } return 0; } |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。