APP下载

哥德巴赫猜想引思

2018-01-02陈蓓菲

数学学习与研究 2017年18期
关键词:哥德巴赫猜想素数

陈蓓菲

【摘要】本文给出了一个大偶数分解成为二个素数独特的分解式(3)式,证明它有解,并给出对于(3)式的充分条件和必要条件的证明.

【关键词】哥德巴赫猜想;大偶数;素数

哥德巴赫猜想是世界近代三大数学难题之一.哥德巴赫是德国一位中学教师,也是一位著名的数学家,生于1690年,1725年当选为俄国彼得堡科学院院士.1742年,哥德巴赫在教学中发现,每个不小于6的偶数都是两个素数(只能被1和它本身整除的数)之和.如,6=3+3,12=5+7,等等.

1742年6月7日哥德巴赫写信给当时的大数学家欧拉,提出了以下猜想:

(a)任何一个大于等于6之偶数,都可以表示成两个奇素数之和.

(b)任何一个大于等于9之奇数,都可以表示成三个奇素数之和.

欧拉在回信中也提出另一等价版本,即任一大于2的偶数都可写成两个素数之和.今日常见的猜想陈述为欧拉的版本.把命题“任一充分大的偶数都可以表示成一个素因子个数不超过a个的数与另一个素因子不超过b个的数之和”记作“a+b”.1966年陈景润证明了“1+2”成立,即“任一充分大的偶数都可以表示成二个素数的和,或是一个素数和一个半素数(二个素数的积)的和”,我不能认同陈景润的做法,因为,其在很大程度上偏离了原题.

摘译1742年6月30日欧拉给哥德巴赫的一封信:

“正如在你给我的来信中所观察到的那样,每个偶数看来是两个素数之和,还蕴藏着每个数如果是两个素数之和,则它可以是任意多个素数之和,个数由你而定.如果给定一个偶数n,则它是两个素数之和,对n-2也是如此,则n是三到四个素数之和.如果n是奇数,则它一定是三个素数之和,因为n-1是两个素数之和.所以,n是一个任意多个素数之和.虽然我现在还不能证明,但我肯定每个偶数是两个素数之和……”

一、下面引述前人研究的基础

(一)殆素数

殆素数就是素因子个数不多的正整数.现设N是偶数,虽然不能证明N是两个素数之和,但足以证明它能够写成两个殆素数的和,即N=A+B,其中A和B的素因子个数都不太多,譬如,素因子个数不超过10.用“a+b”来表示如下命题:每个大偶数N都可表示为A+B,其中A和B的素因子个数分别不超过a和b.显然,哥德巴赫猜想就可以写成“1+1”.在这一方向上的进展都是用所谓的筛法得到的.

(二)例外集合

在数轴上取定大整数x,再从x往前看,寻找使得哥德巴赫猜想不成立的那些偶数,即例外偶数.x之前所有例外偶数的个数记为E(x).我们希望,无论x多大,x之前只有一个例外偶数,那就是2,即只有2使得猜想是错的.这样一来,哥德巴赫猜想就等价于E(x)永远等于1.当然,直到现在还不能证明E(x)=1;但是能够证明E(x)远比x小.在x前面的偶数个数大概是x2;如果当x趋于无穷大时,E(x)与x的比值趋于零,那就说明这些例外偶数密度是零,即哥德巴赫猜想对于几乎所有的偶数成立.这就是例外集合的思路.

(三)三素数定理

如果偶数的哥德巴赫猜想正确,那么奇数的猜想也正确.我们可以把这个问题反过来思考.已知奇数N可以表示成三个素数之和,假如又能证明这三个素数中有一个非常小,譬如,第一个素数可以总取3,那么我们也就证明了偶数的哥德巴赫猜想.这个思想就促使潘承洞先生在1959年,即他25岁时,研究有一个小素变数的三素数定理.这个小素变数不超过N的θ次方.我们的目标是要证明θ可以取0,即这个小素变数有界,从而推出偶数的哥德巴赫猜想.潘承洞先生首先证明了θ可取14.后来的很长一段时间内,这方面的工作一直没有进展,直到1995年展涛教授把潘老师的定理推进到7120.这个数已经比较小了,但是仍然大于0.

(四)几乎哥德巴赫问题

1953年,林尼克发表了一篇长达70页的论文.在文中,他率先研究了几乎哥德巴赫问题,证明了,存在一个固定的非负整数k,使得任何大偶数都能写成两个素数与k个2的方幂之和.这个定理,看起来好像丑化了哥德巴赫猜想,实际上它是非常深刻的.我们注意,能写成k个2的方幂之和的整数构成一个非常稀疏的集合.

二、推理与讨论

下面给出对于哥德巴赫猜想(a)的证明,即:任何一个大于等于6之偶数,都可以表示成两个奇素数之和.

一天晚上,我突然想起哥德巴赫猜想,感觉有戏,所以,就动起了笔杆子,我首先从递归原理出发,众所周知,素数又是奇数,则当我假设有2K=C+D,K为正整数,C,D代表素数,那么有2q=C1+D1,2p=C2+D2,C1,D1,C2,D2,…代表素数,p,q代表正整数,则有2K+2=C+D+2=(2q+1)+(2p+1)+2=2q+2p+2+2=(C1+D1)+(C2+D2)+2+2=….

这样拆分出许多2,其中奇数可以一直拆分到3为止,然后我们又将2的倍数补充至下式中,则一个大偶数2K+6可以由下式来决定:

2K+6=(3+2i)+(3+2(K-i)).(1)

我們让2K+6来作为一个大偶数,分解出两个奇数之和,这两个奇数分别用(3+2i)和(3+2(K-i))来表示,而在数轴上移动多少个2会使得(3+2i)和(3+2(K-i))成为素数,即当K定下来以后,就是由i的大小来决定什么时候分解成两个素数之和.

所以,问题是,对于一个大偶数2K+6,至少存在一个i,使得上面(1)的分解式子成立.

这样,对于K=10而言,2K+6=26,存在一个i=5,使得

2K+6=(3+2i)+(3+2(K-i))=13+13=26.

对于K=10而言,还存在另一个i=2,使得

2K+6=(3+2i)+(3+2(K-i))=7+19=26.endprint

而对于K=11,则存在一个i=4使得上式(1)成立,有

2K+6=(3+2i)+(3+2(K-i))=11+17=28.

更有i=1使得上式(1)成立,有

2K+6=(3+2i)+(3+2(K-i))=5+23=28.

明眼人一看就知道它的正確性,我以前也想过哥德巴赫猜想,但都没有这一次想得如此透彻.

对于哥德巴赫猜想,还有值得进一步探讨的时间和空间,对于(1)式,我们在3的基础上加了两个偶数2i和2(K-i),得到两个永远的奇数或者奇素数,这样就筛选掉了偶数,去掉了一半不合格的偶数,但是,里面还有水分,我们还必须把纯粹的奇数去掉,但是这样也已经向一个大偶数分解成两个素数之和迈进了一大步.

对于(1)式,0≤i≤K,这样,对于2K而言,i只走了一半少6,对于K=1 000而言,2K+6=2 006,i的取值的试探空间只在0≤i≤1 000,这样有点像二分法,把2的数倍的偶数分别加到初始的3上面.

不管怎样,我们必须想办法把(1)式中分解式子中的非素数的奇数去掉,但是,这是艰难的一个环节,我们用

(3+2i)|(1,(3+2i))和(3+2(K-i))|(1,(3+2(K-i)))来表示这两个数只能被1和它本身所整除,不能被2,3和直到它本身减1所整除.

我们试图去掉水分,去掉奇数,剩下素数,这样让我们来试一试去掉3的倍数,此时(1)式中的(3+2i)≠3a和(3+2(K-i))≠3b,假设a,b都是自然数,3a和3b用来表示3的倍数,可以把它们当作两个常数,K也理所当然当作一个常数,所以i至少有一个解.

我们还必须去掉5的倍数,7的倍数,…,直至华罗庚定理的平方根数,即(3+2i)的平方根取整数和(3+2(K-i))的平方根取整数,但是,即使在数轴上去掉这么多正整数,其仍然存在一些素数,满足一个大偶数可以分解成两个素数之和,这样一个命题.

3的倍数的情况是这样,5的倍数的情况是这样,7的倍数的情况是这样,以此类推,直至华罗庚的平方数取整数,因此,我们可以将式子写成

2K+6=(3+2i)|(1,(3+2i))+(3+2(K-i))|((1,(3+2(K-i)))(3)

来表示它的分解式,即一个大偶数可以分解成两个素数之和.

虽然,去掉的非素数很多,但是,仍然存在我们所需要的素数,可能只有一两个式子而已,这样已经足够说明问题了.下面我会给出一个范围之内的大偶数的分解式子计算机程序,即分解成两个素数之和的C语言程序.

#include

#include

int main() {

int k,m,n,c,d,i,j,p,flag1,flag2;/*m代表一个大偶数,n代表6至m之间的偶数,并分解成c+d*/

int prime_number(int);

freopen("H:\\ch1.in","r",stdin);

freopen("H:\\ch2.out","w",stdout);

printf("附表1\\n");

printf("----------------\\n");

printf("Hello,world!\\n");

printf("欢迎来到哥德巴赫梦想园地,我们将在这里见证一个又一个大偶数分解成两个素数之和\\n");

printf("----------------\\n");

/*printf("k=");*/

/*scanf("%d",&k);*/

k=1000;

m=2*k+6;

for(n=6;n<=m;n=n+2)

{ p=0;

for(i=3;i<=n/2;i=i+2)

{flag1=prime_number(i);

if(flag1==0){c=i;j=n-i;flag2=prime_number(j);

if(flag2==0){d=j;printf("%-4d=%-4d+%-4d",n,c,d);p=p+1;if(p%3==0) printf("\\n");}}}

printf("\\n---------------\\n");}

return 0;}

int prime_number(int i0)

{int k1,i1,flag=0;

k1=(int)sqrt((double)i0);i1=2;

while((i1<=k1)&&(flag==0))

{if(i0%i1==0) flag=1;

i1=i1+1;}

return(flag);}

我们在以上程序中引用了“哥德巴赫梦想园地”一词,而不用“哥德巴赫猜想园地”,是因为证明哥德巴赫猜想是我的梦想,而且,“梦想园地”也远比“猜想园地”要顺畅得多,整个证明和说明过程通透易懂,就像一个家庭主妇在做一桌菜,虽然朴素无华,却也了如指掌,这就是一个家庭主妇暨大学副教授的贡献.

如上,我已经成功调试了哥德巴赫猜想分解程序,并以6~2 006之间的偶数为例做了分解式,结果太多太长(略),由结果可见,这之间的每一个偶数至少有一个分解式,这样,哥德巴赫猜想研究暂告一段落.

然而,哥德巴赫猜想总是弄得我寝食不安,我不能停滞不前,我还必须做点什么,我反复思考,分解式(3)

可以理解成数轴上的两个素数之和,而数轴上的素数是大量存在的.数轴上的任意两个素数之和一定是偶数,是因为,素数也是奇数,两个奇数之和一定是偶数,所以,我们就说这个分解式的充分条件成立.

我仍然反复思考着,让我们来试试哥德巴赫猜想的必要条件是否成立,就是说“任一个大偶数必能分解成两个素数之和”.当我们把分解式写成(3)式,

我们要做的就是找到一个i使得上式成立.

让我们来各个击破,对于(3)式,我们知道存在至少一个i使得下述两个约束条件即(4)式和(5)式成立:

(3+2i)=(3+2i)|(1,(3+2i)),(4)

(3+2(K-i))=(3+2(K-i))|(1,(3+2(K-i))).(5)

从上述两个式子看来,当K定下来以后,K可以看作是常数,所以方程式(3)随着K的变化,不但有解,而且可能不止一个解,所以,这就说明了一个大偶数必能分解成两个素数之和,这就是必要条件成立.

至此,我在心里为自己击掌叫好,这样的问题,我们不要陷入具体的分解式的怪圈,比如,26=13+13,28=11+17,因为,分解式变化多端,我们要的是从理论上证明它,我终于把它想了个通透,对于分解式(3)式,证明了它的充分条件和必要条件.具体的分解式,我们可以通过电脑程序来帮助我们建立分解式.

这些,只是一些证明哥德巴赫猜想的思路,它就像一些骨架,我试图丰富它,试图更加专业化它,试图给它加进一些肉和新鲜血液,让它变得有血有肉,让它变得生动,让它变得更加专业术语化,但是数学就是数学,它来不得半点的虚伪,我想,也只有我胆敢提出(3)式那样的分解式,也只有我能够有那样另辟蹊径的证明思路.

对于(4)和(5)两个式子,并非凭空捏造,也并非没有意义,它们是要说明素数的存在,如果有i使得上面两个式子成立,说明有解,说明(3+2i)和(3+2(K-i))两个数此时为素数,而对于一个大偶数而言,K是常数,当我们要证明所有的大偶数的时候,K才成为变量.

对于哥德巴赫猜想,我们以上这样做的目的是证明有解,即存在一个i使得(3)式成立.

它,妙就妙在只要證明有解就够了,因为分解式是没有规律可言的,所以,触发我这样做.

至此,我们证明了哥德巴赫猜想(a),即任何一个大于等于6之偶数,都可以表示成两个奇素数之和.

由于有了上述对哥德巴赫猜想(a)的证明,应用(3)式的结果,这样我们来证明哥德巴赫猜想(b),即任何一个大于等于9之奇数,都可以表示成三个奇素数之和,我们可以设以下式子:

2K+9=(2K+6)+3=(3+2i)|(1,(3+2i))+(3+2(K-i))|(1,(3+2(K-i)))+3.(6)

上式(6)将其分解成三个奇素数之和.

这样,我们就证明了,1742年6月7日哥德巴赫写信给当时的大数学家欧拉,提出的以下猜想:

(a)任何一个大于等于6之偶数,都可以表示成两个奇素数之和.

(b)任何一个大于等于9之奇数,都可以表示成三个奇素数之和.

【参考文献】

[1]王丽丽,李小凝.陈景润传[M].北京:新华出版社,1998.endprint

猜你喜欢

哥德巴赫猜想素数
孪生素数
两个素数平方、四个素数立方和2的整数幂
有关殆素数的二元丢番图不等式
哥德巴赫猜想的终极证明
关于两个素数和一个素数κ次幂的丢番图不等式
关于素数简化剩余系构造的几个问题
哥德巴赫猜想与我的解答
哥德巴赫猜想与我的解答
论哥德巴赫猜想
论哥德巴赫猜想