美文网首页计算机中的数学编程笔记
【欧拉猜想】是否有无穷多个不可约分的正整数解

【欧拉猜想】是否有无穷多个不可约分的正整数解

作者: 光剑书架上的书 | 来源:发表于2018-05-04 01:59 被阅读123次

    证明或否定: 不定方程 a^4 + b^4 + c^4 = d^4 (*)有正整数解。

    形如

    a^3+b^3=c^3
    a^4+b^4+c^4=d^4
    a^5+b^5+c^5+d^5=e^5
    ……
    

    这样的不定方程,是否有正整数解?

    这类问题被称为 :欧拉猜想, 其中4和5的都有正整数解, 3的被证明了无整数解,其它的都还不知道。

    欧拉猜想

    欧拉猜想是欧拉提出的对费马最后定理引出的猜想,欧拉猜想每个大于2的整数n,任何n- 1个正整数的n次幂的和都不是某正整数的n次幂,1966年L. J. Lander和T. R. Parkin推翻了这一猜想。

    这猜想在1966年被L. J. Lander和T. R. Parkin推翻。他们找出n= 5的反例:

    27^5+ 84^5+ 110^5+ 133^5= 144^5
    

    我们可以使用 Kotlin 代码花差不多3min 的时间,算出来这组数字来:

        @Test
        fun test3() {
            var list1 = arrayListOf<Pair<Long, String>>()
            var list2 = arrayListOf<Pair<Long, String>>()
    
            val start1 = System.currentTimeMillis()
            // 假设: a<b<c<d, 肯定有: e > {a,b,c,d}
            for (a in 1..200L) {
                for (b in a..200L) {
                    for (c in b..200L) {
                        Propositions.f3(a, b, c)
                        list1.add(Pair(Propositions.f3(a, b, c), "a=$a,b=$b,c=$c"))
                    }
                }
            }
            val end1 = System.currentTimeMillis()
            println("Using Time1: ${(end1 - start1)} ms")
            println("list1.size=${list1.size}")
    
            val start2 = System.currentTimeMillis()
            for (d in 1..200L) {
                (d..200L).mapTo(list2) { Pair(Propositions.f4(it, d), "e=$it,d=$d") }
            }
            val end2 = System.currentTimeMillis()
            println("Using Time2: ${(end2 - start2)} ms")
            println("list2.size=${list2.size}")
    
            /*
            首先想到的,遍历所有元素,穷举判断;更进一层:平均切割 List,每一段开启1个线程计算。
            val start3 = System.currentTimeMillis()
            loop@ for (x in list2) {
                if (list1.contains(x)) {
                    println("x=$x")
                    break@loop
                }
            }
            val end3 = System.currentTimeMillis()
            println("Using Time3: ${(end3 - start3)} ms")
            */
    
            val start3 = System.currentTimeMillis()
            var list1n = arrayListOf<List<Pair<Long, String>>>()
            val segment = 10_0000
            val step = list1.size / segment
            for (i in 1..segment) {
                var listi = arrayListOf<Pair<Long, String>>()
                for (j in ((i - 1) * step)..(i * step - 1)) {
                    listi.add(list1[j])
                }
                list1n.add(listi)
            }
            println("list1n.size=${list1n.size}")
            val end3 = System.currentTimeMillis()
            println("Using Time3: ${(end3 - start3)} ms")
    
            val start4 = System.currentTimeMillis()
            var threadList = arrayListOf<Thread>()
            list1n.forEach {
                threadList.add(Thread {
                    for (x in list2) {
                        it.filter { x.first == it.first }
                                .forEach { println("$x,$it") }
                    }
                })
            }
            println("threadList.size=${threadList.size}")
            for (thread in threadList) {
                thread.start()
                thread.join()
            }
            val end4 = System.currentTimeMillis()
            println("Using Time4: ${(end4 - start4)} ms")
        }
    

    其中,f3,f4函数定义如下:

        fun f3(a: Long, b: Long, c: Long): Long {
            return a * a * a * a * a +
                    b * b * b * b * b +
                    c * c * c * c * c
        }
    
        fun f4(e: Long, d: Long): Long {
            return e * e * e * e * e - d * d * d * d * d
        }
    

    运行的结果是:

    Using Time1: 3247 ms
    list1.size=1353400
    Using Time2: 19 ms
    list2.size=20100
    list1n.size=100000
    Using Time3: 72 ms
    threadList.size=100000
    (20301568331, e=144,d=133),(20301568331, a=27,b=84,c=110)
    (45812264224, e=144,d=110),(45812264224, a=27,b=84,c=133)
    (57735244800, e=144,d=84),(57735244800, a=27,b=110,c=133)
    (61903015317, e=144,d=27),(61903015317, a=84,b=110,c=133)
    Using Time4: 238898 ms
    

    也就是(27,84,110,133,144)。

    但是,当数字非常的大的时候,这种单机遍历循环,恐怕在有限时间内,难以胜任。这个时候,也许超大规模并行网络计算机、量子计算机会解决这种问题。但是,数字是无穷大的本身这件事情,就非常奥妙无穷了。

    1988年,Noam Elkies找出一个对n= 4制造反例的方法。他给出的反例中最小的如下:

    2682440^4+ 15365639^4+ 18796760^4= 20615673^4
    

    Roger Frye以Elkies的技巧用电脑直接搜索,找出n= 4时最小的反例:

    95800^4+ 217519^4+ 414560^4= 422481^4
    

    同时,Noam Elkies 也证明了这个方程有无穷多个解 (椭圆曲线理论)。自此,欧拉猜想也有了结论。

    现在仍未知道当n> 5时的反例。

    其实这样的例子并不少,主要是当时提出这个猜想的时候,推翻猜想的反例却远远超出人类自身的计算能力,就必须得依靠计算机的大量计算,才能判断到时是对是错。

    我们今天先从最有名的欧拉来讲起,作为中世纪著名的数学家,欧拉一生的创作极为丰富,只要不是艺术类和语言类的同学,相信都对欧拉念念不忘(有一些痛,一辈子都忘不了)。

    欧拉是一些产出极为丰富的数学家,他也曾提出过这么一个猜想(欧拉猜想):

    image.png

    当欧拉提出这个猜想的时候,声称该方程没有正整数解。

    在这个猜想提出来之后,欧拉并没有证实是否正确就已离去,而在欧拉离世后的两百多年里,大批数学家都尝试去解开这道谜题,但并没有人成功,谁也无法证明欧拉猜想是对的,同时也无法举一个例子来证明这个是错误的。

    即便在计算机出现后,由于算力不足,依旧没办法找到一个反例来证明欧拉猜想是错的,而这似乎也让人们更加相信欧拉猜想是正确的。

    伴随着计算算力的提升,欧拉猜想正式被证伪:

    1988年,哈佛大学的Noam Elkies在一次计算中,发现了这个等式:

    image.png

    此时,这也就正式宣传欧拉猜想是错误的。但思想的堤坝有了出口,思维便一发不可收拾,在随后的深入研究中,Noam Elkies发现该方程存在无穷多个正数解。

    尽管欧拉猜想两百多年来屹立不倒,但最终还是被推翻了,两百多年来,各路豪强用尽脑力也无法破解的谜题,终究被计算机所打破,而这也正入Simon Singh 所著的《费马大定理:一个困惑了世间智者358年的谜》中的那句话:“这里的教训是,你不能通过只对前一百万个数字来证明一个猜想对所有的数都成立。”

    其实,数学上的证伪和证实都是一个非常有趣的过程,我们不断的用例子来证明这个猜想是对的,到后来你会发现,即便是一百万个对的例子却敌不过一个反例。

    这也和我们的人生一样啊!


    【参考阅读】

    世界三大猜想

    费马猜想

    image

    费马纪念邮票

    1637年左右,“业余数学家之王”费马先生在阅读丢番图《算术》拉丁文译本时,曾在第11卷第8命题旁写道:“将一个立方数分成两个立方数之和,或一个四次幂分成两个四次幂之和,或者一般地将一个高于二次的幂分成两个同次幂之和,这是不可能的。关于此,我确信已发现了一种美妙的证法 ,可惜这里空白的地方太小,写不下。”

    image

    好一个“空白的地方太小,写不下”,终使无数后代数学家们前仆后继。

    欧拉、狄利克雷、勒让德、拉梅、高斯的学生库默尔、勒贝格、谷山丰等等开始接力猜想的证明过程。

    终于在猜想提出350多年后的1994年由英国数学家安德鲁·怀尔斯(Andrew Wiles)完成,遂称费马大定理。

    当然,怀尔斯解决这个猜想本身就是一个精彩传奇。

    image

    数学家安德鲁·怀尔斯

    四色猜想

    image

    四色猜想的提出也颇具生活化。1852年,毕业于伦敦大学的格斯里(FrancisGuthrie)来到一家科研单位搞地图着色工作时,发现每幅地图都可以只用四种颜色着色。于是,他做了一个很自然地思考:这个现象能不能从数学上加以严格证明呢?

    数学源于生活啊!

    这个猜想若到此,也就不会激起再大的反响。恰恰是格斯里的弟弟的导师正是著名数学家德·摩尔根,这位德·摩尔根有位好友数学家正是发明“四元数”的著名数学家哈密尔顿爵士。而问题恰恰就出在这位神童爵士到死没有解决这个问题。这时,大家才意识到这个问题的严重性。

    image

    数学家哈密尔顿

    1872年,英国当时最著名的数学家凯利正式向伦敦数学学会提出了这个问题,于是四色猜想成了世界数学界关注的问题,于是又一个猜想引得无数一流数学家抛头颅洒热血。

    image

    数学家凯利

    经过肯普、赫伍德等人的努力后,证明了一个较弱的命题——五色定理,即,对地图着色,用五种颜色就够了。这时,又到了一个瓶颈,越来越多的数学家绞尽脑汁,再无进展。人们也开始认识到,这个貌似容易的题目,其实是一个与费马猜想相媲美的难题。

    最后,在1976年6月,美国伊利诺斯大学的两台不同的电子计算机上,两位数学家阿佩尔(Kenneth Appel)与哈肯(Wolfgang Haken)用了1200个小时,作了100亿判断,结果没有一张地图是需要五色的,最终证明了四色定理,轰动了世界。遂称四色定理。

    image

    一枚纪念邮票,上面写着“四种颜色就够了”

    有意思的是,这个问题的研究意外带动拓扑学与图论的生长、发展。

    看似简单的问题,真的不简单。这本身就是大自然留给人类的一个无限的谜。

    至此,世界三大猜想已然解决了两个,剩下最后一个哥德巴赫猜想至今尚未彻底解决。

    哥德巴赫猜想

    image

    这个哥德巴赫猜想,与大文豪歌德无关,当然,亦非“西方近代音乐之父”巴赫所为,而是源自于一位与之同时代的德国数学爱好者哥德巴赫(Goldbach C.)。

    这位富家子弟哥德巴赫喜欢结交数学家,与数学史上最伟大的家族伯努利家族结识,和大数学家欧拉是好友。真是物以类聚,人以群分。

    1742年6月7日,哥德巴赫写信给欧拉,提出了一个猜想:任何一个奇数,比如77,可以把它写成三个素数之和,即77=53+17+7;又如461可以写成257+199+5,仍然是三个素数之和。即发现“任何大于5的奇数都是三个素数之和。”

    1742年6月30日欧拉先生给哥德巴赫回信了:这个命题看来是正确的,但是暂给不出严格的证明。同时欧拉对上述命题做了修改:任何一个大于2的偶数都是两个素数之和。这个欧拉版本是现在常见的猜想陈述,当然,他到死也没能给予证明。

    大数学家没能解决的问题,当然吸引人。1770年,英国数学家爱德华·华林(Waring Edward)首先将它公之于众。于是,又一场新的数学追逐赛开始了。

    研究偶数的哥德巴赫猜想常见有四个途径,其中殆素数(素因子个数不多的正整数)是个重要途径。即常用“a+b”这样的形式表示如下命题:每个大偶数N都可表为A+B,其中A和B的素因子个数分别不超过a和b,即N=A+B。易知,哥德巴赫猜想就是证明N可以写成"1+1"。

    200多年过去了,至今没有完全解决。不过由此猜想带来的数学新方法则层出不穷,从另一方面促进数学自身的发展。

    我国最早研究哥德巴赫猜想的数学家是华罗庚先生。后,王元、潘承洞和陈景润等在哥德巴赫猜想的证明上取得了相当好的成绩。目前较好的成果(陈氏定理)乃于1966年由中国数学家陈景润取得,即所谓的 “1 + 2 ”。

    image

    数学家陈景润的墓碑

    或许,最后要摘下这颗数学上的明珠,还在等待新的数学新方法吧!

    这三大数学猜想看似简单易懂,一般人都能理解,但实则内涵深邃无比,不可轻易触碰。

    希尔伯特23个数学问题与世界七大数学难题

    而从数学史上看,某一阶段的数学猜想的总结与重接提出又往往引领着数学的发展与方向。

    数学巨匠大卫·希尔伯特在1900年8月8日于巴黎召开的第二届世界数学家大会上的著名演讲中提出了23个数学难题。在过去百年中激发数学家的智慧,指引数学前进的方向,其对数学发展的影响和推动是巨大的,无法估量的。其中,除了第8、9、15、16个问题未解决或部分解决,其它大部分已经解决。

    image

    大卫·希尔伯特

    然后,在过了百年后的2000年,根据数学一世纪以来空前的发展,美国克雷数学研究所的科学顾问委员会又选定了七个“千年大奖问题”,克雷数学研究所的董事会还建立七百万美元的大奖基金,每个“千年大奖问题”的解决都可获得一百万美元的奖励。

    同样的,“千年大奖问题”一经提出,便在世界数学界产生了强烈反响。这些问题都是关于数学基本理论的,但这些问题的解决将对数学理论的发展和应用的深化产生巨大推动。

    至今,已有一个被解决,即庞加莱猜想由俄罗斯数学家格里戈里·佩雷尔曼破解,还剩六个。

    不过,现在看来,能解决这些猜想的数学家都不是一般的怪才。这位谜一样的天才格里戈里·佩雷尔曼同样不一般,千禧数学奖颁奖时他不在场,他还拒绝了数学界的较高荣誉——菲尔兹奖,这可是许多数学家们毕生所追求的无上荣誉。

    image

    格里戈里·佩雷尔曼

    大数学家也有猜错之时

    当然,既然是猜想,也就有猜错的可能。

    更甚者,若是大数学家自己猜错,可能就带来后世数学家几百年的折腾。

    下面,我们不妨领略一二。

    无理数的乌龙事件

    image

    毕达哥拉斯

    首先出场的,就是大名鼎鼎的毕达哥拉斯学派。

    毕达哥拉斯学派是数学史上最早以理性的逻辑思维,即从数理的角度探求自然本原的学派。

    不过,他们所谓的“一切数”是均可表成整数或整数之比的数(即我们所知的有理数)。得出这个结论,当然不是演绎推理的结果,而是基于经验基础和其哲学思想基础上的一个归纳总结。在数学层面上看充其量就是一个数学猜想。

    因为毕达哥拉斯神一般的地位,当时,无人怀疑。

    然而,戏剧性的是毕达哥拉斯学派从数学问题本身出发的推导出了毕达哥拉斯定理(即勾股定理),于是,注定成了自己数学信仰的“掘墓人”。

    其学派中的一个成员希帕索斯在利用毕达哥拉斯定理研究边长为1的正方形时,发现其对角线的长度无法用整数或整数之比来表示,也就是说,这个数并非他们学派一直信仰的“数”。这就是数学史踢出的第一个乌龙球“根号2”。

    不过,这个现在中学生习以为常的一个数,在当时社会的出现,不管是对数学,还是哲学,都是一个致命的打击。该学派领导人惶恐之余,认为这将动摇他们在学术界的统治地位,也动摇了他们对数的信仰。于是极力封锁该真理的流传,希伯索斯被迫流亡他乡,不幸的是,在一条海船上还是遇到毕氏门徒,于是希伯索斯被残忍地扔进了大海。这个希伯索斯算是史上有记载的第一位为真理献身的数学家了。

    他们猜错了,还不认错,这才是真正可悲的事。

    当然,数学真理终究是无法隐盖的。这个根号2最终导致了数学史上第一次数学危机的发生,也让人们发现了无理数的存在。

    “马”失前蹄

    image

    费马

    还是那位提出费马大猜想的费马先生。他发现:

    image

    image

    这位数学爱好者哥德巴赫虽然没有研究什么大的数学问题,但算是数学史上的一位福星,不断发现并提出问题,从而意外推进数学的发展。

    再说这位欧拉,1732年,年仅25岁,但已经于前一年获得物理学教授的职位,再过两年就将接替他的老师丹尼尔成为数学所所长 。就这样,这个天才数学家在费马死后67年得出F5 =641×6700417,这一结果意味着F5 是一个合数,从而宣告了费马的猜想是错的。

    马也有失前蹄的时候啊!

    费马,这位伟大的数论天才看来过于相信自己的直觉,轻率地做出了他一生的一次大的离谱的错误猜测——因为,迄今为止,费马数除了被其本人所证实的那五个外竟然没有再发现一个!

    于是,人们又开始了另一猜想:在所有的费马数中,除了前五个是素数外,其他的都是合数。

    至于这个猜想,至今,仍不得而知。

    欧拉也不能幸免

    image

    欧拉纪念邮票

    欧拉在研究费马最后定理(前面提到的费马猜想)时引出一个猜想,每个大于2的整数n,任何n- 1个正整数的n次幂的和都不是某正整数的n次幂。即

    image

    比如,当n=4时,即

    image

    欧拉猜想这个方程无整数解。

    二百年来,没有人能证明欧拉猜想,但也没有人能找出一个反例来否定它。直到1966年,L. J. Lander和T. R. Parkin找到了第一个反例:

    image

    同时,Noam Elkies 也证明了这个方程有无穷多个解。自此,欧拉猜想也有了结论,大数学家也有猜错的时候。

    梅森数的意外

    image

    梅森

    最后,我们再来提一下梅森数。

    17世纪法国著名的僧侣数学家马林•梅森(Mersenne)在欧几里得、费马等人有关研究的基础上对2p-1(数学界把这种数称为 “梅森数”,并以Mp记之。)作了大量的计算、验证,并于1644年在他的《物理数学随感》一书中断言:

    在不大于257的素数中,当p = 2、3、5、7、13、17、19、31、67、127、257 时,2p-1是素数,其它都是合数。

    因为梅森的地位,同样地,250年来,人们对其断言也是深信不疑。

    直到1903年,哥伦比亚大学的数学家科尔(Frank Nelson Cole,1861~1926)在美国数学会的一个会议上作了一篇《论大数的因式分解》。只见,科尔写下了267 -1=147 573 952 589 676 412 927=193 707 721×761 838 257 287。

    于是,梅森猜想这个百年神话顷刻间破灭。

    数学猜想的证明之路漫漫,数学猜想的提出也必将继续不断。只是正如Simon Singh在其所著的《费马大定理:一个困惑了世间智者358年的谜》所言:“这里的教训是,你不能通过只对前一百万个数字来证明一个猜想对所有的数都成立。”

    相关文章

      网友评论

      • dffbcab54292:费马大定理,我们都知道n=2的时候有正整数解,也就是勾股数组。
        那么,如果扩展到n》2,是不是因为幂次高于未知数个数因而无解。
        不知道这种情况是否都有正整数解,
        比如n=3的时候,X^3+ Y^3+ Z^3=W^3 是肯定有正整数解。
        那么,n=4的时候,X^4+ Y^4+ Z^4+U^4=W^4是不是一定有正整数解?
        推广到一般形式会怎么样?
      • dffbcab54292:想问的问题你这里居然有,先收藏一下

      本文标题:【欧拉猜想】是否有无穷多个不可约分的正整数解

      本文链接:https://www.haomeiwen.com/subject/quyrrftx.html