这些天很无聊的了解了一下几个数学题
由对王垠的40行代码引发,先是研究了尾递归,后又由于王垠的文章《谈P=NP?》了解了一下当今数学的七大难题,于是又去查其中一个庞加莱猜想的事情(庞加莱猜想已经解决,后有丘成桐事件),另外哥德巴赫猜想的相关事情(陈景润的1+2,非七大难题),最后又回到P/NP问题(七大难题之一),结果不小心又无聊的去查了一下最大素数问题,更无聊的是还跟着去证明了一下。。。跟我的编程工作毫无关系嘛。。。我发现我的思维也太散了。。。
关于最大素数问题
是否有最大素数,下面是百度百科给出的证明过程:
不存在最大质数!
上小学的时候,我们就知道所有的自然数可以分为质数(素数)和合数两类,当然还特别规定了“1既不是质数,也不是合 数”。100以内的质数,从小到大依次是:2、3、5、7、11、13、17、19、……、83、89、97。不用说了,你一定会背下来。那么质数的个数 是不是有限多的呢?
在解决这个问题之前,我们先来看看另一个问题:怎样判断一个已知自然数是不是质数。比如,143是不是质数?
你一定会按照下面这个步骤去判断: 先用最小的质数2去除143,不能整除;再用3去试试,还是不行;再依次用5、7试试,还是不行;11呢?行!143=11×13,所以143不是质数,而是合数。所以,判断一个数是不是质数,只需用比这个数小的所有质数,依次去除它即可,如果都不能整除的话,这个数就一定是质数;相反,只要这个数能够被某一个质数整除,这个数就一定是合数。这种方法所依据的原理是:每一个合数都可以表示成若干个质数的乘积。不用说,这叫做“分解质因数”,也是小学数学的知识。
我们先假设质数的个数是有限多的,那么必然存在一个“最大的质数”,设这个“最大的质数”为N。下面我们找出从1到N之间的所有质数,把它们连乘起来,就是:
2×3×5×7×11×13×……×N
把这个连乘积再加上1,得到一个相当大的数M:
M=2×3×5×7×11×13×……×N+1
那么这个M是质数还是合数呢? 乍一想,不难判断,既然N是最大的质数,而且M>N,那么M就应该是合数。既然M是合数,就可以对M分解质因数。可是试一下就会发现,我们用从1到N之间的任何一个质数去除M,总是余1!这个现实,又表明M一定是质数。
这个自相矛盾的结果,无非说明: 最大的质数是不存在的!如果有一个足够大的质数N,一定可以像上面那样,找到一个比N更大的质数M。既然不存在最大的质数,就可以推知自然数中的质数应该有无限多个。
可同时百度百科有人给出了另一个反例:
M=2×3×5×7×11×13×……×N+1,用从1到N之间的任何一个质数去除M,总是余1!这个现实,又表明M一定是质数。此结论大错特错,例如,2×3×5×7×11×13+1=30031=59×509,30031是个合数。
看到这个反例,我开始怀疑以上证明的正确性,于是想了好久,终于想明白,该证明是正确的!
反例的错误点在于他没有除比30031小的所有素数,仅除到13,而要证明一个素是否素数必须要除比他小的所有素数均不能整除才可以证明该数是素数。
关于快速证明一个数是否素数采用该数除以比他小的所有素数即可快速判断而无需除比他小的所有数,这个很好证明!每一个合数必然可以表示成若干素数的乘积,一样很容易证明。这里不赘述。
我们之所以对以上证明过程存在质疑,主要来自于该证明的结论是N如果是最大素数,那么M还是素数。于是通过反例N=13,则M=30031,可30031是合数即M是合数,与上面的推论M是素数矛盾了!!这是怎么回事呢?是否说明这个推论是错误的呢?经过思考我们发现,证明中认定M是素数的前提是首先我们得认定N是最大的素数!!才推出M还是素数,然后自相矛盾,即可反证N不是最大素数。而反例中的前提条件即出错,N=13,显然13不是最大素数他就不可能成为N。
我们先不考虑M和N谁比较大,按证明即先认定N为最大的素数,那么可推出M必定为素数这个结论。最后发现M>N,故N就不是最大素数。
然后再来看反例:”M=2×3×5×7×11×13×……×N+1,用从1到N之间的任何一个质数去除M,总是余1!这个现实,又表明M一定是质数。此结论大错特错,例如,2×3×5×7×11×13+1=30031=59×509,30031是个合数。“,其实M除以1到N总余1表示M一定是素数这个结论并没有错,因为这个结论的前提条件是N是我们假定的最大素数成立的前提,而不是指任意素数,作者混淆概念,如例子将13=N,推出出30031为M,而M不是素数所以推翻结论,这前提条件就不正确了。