费马大定理(Fermat's Last Theorem)不仅是一道困扰数学家300多年的难题,还有人专门写了一本书,书名就是《费马大定理》。这本书在我的Kindle里放了有挺长时间了,最近重新捡了起来,因为我发现比特币加密算法中的椭圆曲线与费马大定理有密切关系,而我又实在看不出费马公式
公式与椭圆曲线
有何联系,所以到书中一寻究竟。
《费马大定理》一书的作者是Simon Singh,他还在1996年导演了同名的纪录片《地平线:费马大定理》(链接:https://v.qq.com/x/page/d0198hri4gz.html)。虽然作者在书和电影中尽量都用朴实的语言,并没有引入几个公式,但如果没有基本的数论知识,理解起来并不轻松,听听多位数学家们的秩事还是挺有意思的。
国内有位张宇老师也专门做了一期视频,把其中的一些故事讲得生动有趣,链接:https://v.qq.com/x/page/e0544ev5yzw.html
勾股定理
费马大定理的描述非常简单,小学生就可以理解,但证明过程奇难无比,这个定理与我们熟知的勾股定理还是近亲。勾股定理的公式
我们在小学时就学过,在国外被称为毕达哥拉斯定理 (Pythagorean theorem)。
满足方程
的正整数解被称为勾股数,在国外称为毕达哥拉斯三元组(Pythagorean triple),最小的一组勾股数是我们熟悉的(3,4,5),西周初年的商高提出了“勾三股四弦五”。
现在有了计算机,找这些勾股数非常轻松,比如一行Python代码就可以搞定,这里去掉了一些重复项,假定a<b<c
代码语言:javascript复制print([(a,b,c) for a in range(1,101) for b in range(a,101) for c in range(b,101) if a**2 b**2 == c**2])
执行结果如下:
[(3, 4, 5), (5, 12, 13), (6, 8, 10), (7, 24, 25), ... , (60, 80, 100), (65, 72, 97)]
代码语言:javascript复制Haskell的源代码则更加简洁,代码即公式,公式即代码:
代码语言:javascript复制[(x,y,z) | x<-[1..100], y<-[x..100], z<-[y..100], x^2 y^2==z^2 ]
中国人研究数学是实用主义,能把“勾三股四弦五”用于生产实践就行,而国外学派讲究严谨,构建好几条公理,然后通过公理去证明一条一条的定理。勾股定理看似简单,但证明起来也需要一点技巧,我上学时用过的教科书上看到的是经典的欧几里得证明法。说实话,当时看明白了这个复杂的证明思路,但现在无论如何是推不出来了。
有一些爱好者收集了100多种证明方法,可谓是五花八门、千奇百怪,链接:https://www.cut-the-knot.org/pythagoras/index.shtml,我最喜欢下面这种无字的证明。
说到无字证明,再扯远一些,当年看过这个关于排列组合的无字证明,这个图中除了公式之外,绝对是一个字也没有,非常精巧,不过理解起来也并不容易。
费马大定理
勾股公式中存在着无穷的正整数解,但把方程稍微改一下
,就找不出一个正整数解,对于
,
,仍然没有正整数解。因此,费马猜测:
n>2时,没有正整数解。
费马出生贵族,喜欢捉弄其他的数学家,经常呆在家里琢磨出一个定理,对外宣称自己找到了证明方法,让外人苦思冥想而不得解。费马死后,有人在他的手稿里发现了许多定理,其它定理慢慢都被世人解决了,但只有一个没被解决,被称为最后的定理(Last theorem),国内翻译为费马大定理,费马折磨人的天性不改,手稿的空白处留着这样一句经典的话:
对这个命题我有一种十分美妙的证明,可惜这里空白太小,写不下。
他留下这一小段话不要紧,这个定理又折磨了后人300多年。
完满数、亲和数、可交往数
完满数(Perfect Number),又被称为完全数、完美数或完备数,它的所有真因子之和,恰好等于它本身。
从这个思路出发,有人发明了亲和数(Amicable Pair),即某个数的所有真因子之和正好等于对方。220和284互为亲和数,因为220的所有因子1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110之和为284,而284的所有因子1, 2, 4, 71, 142之和为220。
再推广之,就有了可交往数(Sociable Numbers),例如:数组(1264460, 1547860, 1727636, 1305184)中,第一个数的因数之和等于第二个数,第二个数的因数之和等于第三个数,...,而第四个数的因数之和等于第一个数,就这样,一群数形成了一个社交圈。
欧拉猜想
欧拉从费马大定理出发也提出了一个猜想,他认为下面这样的方程不存在整数解:
不过,这个猜想是不成立的,很快就有人找到了反例。
1966年,L.J.Lander和T.R.Parkin找到一个反例:
1988年,Noam Elkies找出一个反例:
Roger Frye用电脑直接搜索,找出了一组最小的反例:
n<41000000
费马死于1665年,这个定理发表的时候已经是1670年,费马大定理实在是太折磨人了,数学家就从容易的特例开始下手:
1676年、1678年数学家证明了n=4时,费马大定理成立;
1770年,欧拉证明了n=3时成立;
1823年,n=5的情形被证明;
1832年,n=14被攻克;
1839年,n=7被法国数学家拉梅证明;
1844年,德国数学家识库麦尔用了20多年创立了理想数理论,证明了当n<100,并且不是37、59、67三个数时,费马大定理成立;
1955年,n<4002均成立;计算机开始出现,加速了证明的过程。
1976年,n<125000;
1985年,n<41000000;
但这种证明方法永远无法最终证明费马大定理,即使把n推进到10的1亿次方,仍是一个有限数,费马大定理看来是无法证明的。
根据有限的例子来推出一个结论在数学上是不可靠的,比如:31,331,3331,33331,333331,3333331,33333331 这些数都是素数,但很可惜,下一个数333333331却不是素数,它可以分解为17 * 19607843。
10万马克
保罗·沃尔夫斯凯尔(Paul Wolfskehl)是一名医生,同时也是数学爱好者,他迷恋上了一位漂亮的女性,但是惨遭拒绝,这使他倍感沮丧而决定自杀。保罗做什么事情都要按计划行事,他非常谨慎地制定了死亡计划中的每个细节。他定下了自杀的日子,决定在午夜钟声响起时用一颗子弹结束自己的生命。
他做事效率比较高,很快提前把安排好的事情都做完了,这时离午夜还有好几个小时呢。为了消磨这几个小时,他就去了图书馆,随手翻到一本数学期刊,很快他被一篇有关费马大定理证明的论文吸引住了,他发现论文中的一处逻辑有漏洞。于是坐下来开始全神贯注地演算,当然最后他没有证明出费马大定理,但规定的自杀时间在不知不觉中已经过了。
沃尔夫斯凯尔感受到了证明数学题的过程带来的成功喜悦,重新认识到了人生的价值并不只有爱情,数学重新唤起了他生命的欲望。为了感谢这个大定理的救命之恩,他的新遗嘱从他死后财产中拿出10万马克(在1997年时相当与100万英镑)设立了一个大奖,用于奖给任何能证明费马大定理的人。1997年6月27日,该奖最后被安德鲁·怀尔斯获得。
保罗·沃尔夫斯凯尔
椭圆曲线
椭圆曲线的模样并不像椭圆,是因为类似于计算一个椭圆的周长的积分而得名。
椭圆曲线的一般形式是
从下面这个特例中可以看出椭圆曲线长的样子。
据说费马大定理经过一个变换可以变为下面这个椭圆曲线方程:
椭圆曲线都是关于x轴对称的,数学家们再给椭圆曲线定义了一种神奇的加法操作,比如P Q,表示两点的连线与曲线的交点,再向x轴引垂线,对面的那个点就是相加之后的结果。而对于相同的点的加法R R,则先做切线,再做垂线。
这种加法操作的几何含义还是挺直观的,可是密码学家们发现把它稍加改造,就可以用于非对称加密领域。这种加密理论要求找到一种不可逆的运算,有加法运算,但没有减法;有乘法运算,没有除法运算。本来密码学家们把大素数相乘用于著名的RSA加密算法中,比如:
99996011 * 99999787 = 9999579800849657
两个素数相乘很容易计算,但把右侧的数字分解为2个素数之积难度就不小,当把500位的素数与500位的素数相乘之后,以现在计算机的计算速度几乎无法解决这个大素数的分解难题。
密码学家感觉RSA还不够复杂,就把目光锁定在椭圆曲线加密算法上,比如比特币中运用了secp256k1的加密算法,他们定义了一个椭圆曲线方程:
,并把整数范围限制在2^256之内(用到了mod模运算),这个函数的图像已经很难画出来了,如果把x,y限制在60以内,这个函数的图像是这样的:
然后在这个空间中找一个很远的点,称为基点,坐标为(79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798, 483ADA77 26A3C465 5DA4FBFC 0E1108A8 FD17B448 A6855419 9C47D08F FB10D4B8),一个私钥经过几亿亿亿次的加法操作之后,变成了公钥。由私钥生成公钥可以在1秒钟之内搞定,但反过来,几百万年也搞不定。
谷山-志村猜想
视线再切换到我们的邻国日本,1954年左右,一对年轻人谷山丰和志村五郎对于一种叫做模形式(modular forms)的数学分支产生了浓厚的兴趣,模运算简单来说就是我们小学时学过的整除后的余数。
谷山丰与志村五郎
本来这种数学与椭圆曲线八杆子打不着,但他们随着研究的深入,神奇地发现,一组模形式竟然与一组椭圆方程的特征完全匹配。他们提出了“谷山-志村猜想”,认为每个模形式与某个椭圆方程有着相同的DNA。可惜,1958年11月17日,谷山丰自杀(他的未婚妻在几周后也自杀),研究至此中断。
1980年代,德国数学家格哈德·弗雷(Gerhard Frey)提出,如果证明了谷山-志村猜想,就间接证明了费马大定理,这里运用了数学中的反证法,他把费马大定理转换为椭圆曲线方程。
(1) 当(且仅当) 费马大定理是错的,则存在一个反例,即存在弗雷的椭圆方程。(2) 弗雷的椭圆方程是如此的古怪,以致于它决不可能被模形式化。(3) 谷山-志村猜想说,每一个椭圆方程必定可以模形式化。推出矛盾。
此时,费马大定理的证明又露出了一丝曙光。
历经7年的最后一击
《费马大定理》全书的主人公出场了,安德鲁·怀尔斯(Andrew Wiles)10岁时遇到了费马大定理,研究生时的学术方向是椭圆曲线,冥冥之中的上帝安排,椭圆曲线与谷山-志村猜想、费马大定理又紧密地联系在了一起。
1986年,他开始着手独立证明谷山-志村猜想,这一研究就是7年,1993年6月,他在英国剑桥大学做了三场学术报告,直到最后一次演讲结束时,他才宣布完成了对费马大定理的证明。
事后,专家组开始对他提交的200页的证明手稿进行逐行审查,让怀尔斯担心的事情发生了,有一处证明逻辑存在着缺陷,而且看上去并没有那么容易补救。世界上扑面而来的报道更把他压得喘不过气来,如果这个证明无法补救,那7年的心血可能付之东流。
怀尔斯又苦苦研究了1年,期间还差点放弃,最后终于从他曾经放弃的一种方法中找到了灵感。1995年,他的最终证明的论文精简为100多页,喜欢琢磨的朋友可以到这里下载(http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.169.9076&rep=rep1&type=pdf)。
此后,怀尔斯获得了数学领域上的多项大奖,超过40岁还能有所突破实属不易,当然沃尔夫斯凯尔留下的10万马克也被他收入囊中。他的证明过程实在太复杂了,估计这个世界上没有几个人能够看懂,也有不少人怀疑他是否真的证明了费马大定理。
其它
国内的王德忱还发表了一种初等数学的证明方法,但没有人搭理他,链接:
http://www.docin.com/p-710235243.html 罗胖,作为一名文科生,也在罗辑思维2014年8月14日专门用了一期来介绍《费马大定理》这本书。豆瓣上的一篇万字评论也是相当精彩。
https://www.douban.com/group/topic/64484264/
2013年据说一个美国人有一种简易证明,但后来就没有了下文。
我为什么写这篇文章?好像是在1993年,我马上就要大学毕业,一次被拉去听潘承洞的一个弟子讲课,内容是哥德巴赫猜想,从那次短短的2个小时的讲座中,我知道了数论上最顶级的难题“1 2”、“1 1”的含义,虽然以后从来没有研究过数论,但仍对这个领域饶有兴趣。仅以此文,怀念一下四年大学生活吧。