1.4 勾股数与长方体数
勾股数是最早引起人们兴趣的数学现象,在很远久的年代世界各地都先后有探讨与研究过勾股数的记载。
长方体数是勾股数的三维推广。本节在探索勾股数设计求解基础上,探讨长方体数及其相关的“六个正整数问题”。
1.4.1 勾股数
【背景】 勾广三,股修四,弦隅五。
图1-1 3,4,5的数形关系
埃及最早发现3,4,5是一组勾股数。公元前的巴比伦人就知道119,120,169是一个直角三角形的三边长。
我国早期的《周髀算经》谈到“勾广三,股修四,弦隅五”,就是指边长为3,4,5的直角三角形,即32+42=52。
我国著名数学家华罗庚教授在他生前写的文章中说:“……如果我们宇宙航船到了一个星球上,那儿也有如我们人类一样高级的生物存在。我们用什么东西作为我们之间的媒介?带幅画去吧,那边风景特殊,不了解;带一段录音去吧,也不能沟通。我看最好带两个图形去,一个‘数’,一个‘数形关系’(勾股定理)。”
“数形关系”即勾股定理,勾股数3,4,5的数形关系如图1-1所示。
古代数学家刘徽在《九章算术》中记录了52+122=132,82+152=172,72+242=252,202+212=292等多组勾股数的记载。
古希腊数学家毕达哥拉斯得到一个关于勾股弦数的公式,当n为奇数时,n,构成勾股弦数
通常把满足3元2次方程式
的正整数解x,y,z称为一组勾股数,又称毕达哥拉斯三元数组。该方程式称为“商高方程”或“毕达哥拉斯方程”。
注意到勾股数3,4,5之积为60,考察其他勾股数之积也能被60整除,猜想勾股数之积是否都为60的倍数?
【命题1】 若正整数x,y,z是一组满足式(1)的勾股数,则其积xyz必被60整除。
【证明】 只要证满足式(1)的x,y,z有一个是3的倍数,有一个是4的倍数,有一个是5的倍数,则必有xyz是60的倍数,即xyz=0(mod 60)。
(1)x,y,z中必有一个是3的倍数。
假设x,y,z都不是3的倍数,注意到
(3k±1)2=3(3k2±2k)+1=1(mod 3)
因而式(1)左边为2(mod 3),而(1)右边为1(mod 3),矛盾。
(2)x,y,z中必有一个是4的倍数。
假设x,y,z都不是4的倍数,注意到
(4k±1)2=8(2k2±k)+1=1(mod 8)
(4k+2)2=8(2k2+2k)+4=4(mod 8)
因而式(1)左边为0,2,5(mod 8),而式(1)右边为1,4(mod 8),矛盾。
(3)x,y,z中必有一个是5的倍数。
假设x,y,z都不是5的倍数,注意到
(5k±1)2=5(5k2±2k)+1=1(mod 5)
(5k±2)2=5(5k2±4k)+4=4(mod 5)
因而式(1)左边为0,2,3(mod 5),而式(1)右边为1,4(mod 5),矛盾。
综上即得满足式(1)的勾股数x,y,z之积xyz必是60的倍数,证毕。
【拓展】 试探求并输出指定区间[a,b]内的所有勾股数组。
从键盘输入整数a,b(a<b),寻求满足式(1)的整数x,y,z(a≤x<y<z≤b)。
(1)设计要点。
设指定区间为[a,b],设置二重循环在指定区间内枚举x,y(x<y),应用勾股数的定义式计算d=x∗x+y∗y;z=sqrt(d)。
若z≤b且z∗z=d,则输出x,y,z这一组满足式(1)的勾股数解。
(2)程序设计。
(3)程序运行示例与变通。
由勾股数(3,4,5),(20,21,29)构成的直角三角形的两直角边为连续整数。是否可变通以上程序,求取指定区间内两直角边为连续整数的勾股三角形?
变通:求勾股数中y=x+1的子集。
删除y循环,同时在循环体中添加y=x+1;给变量y赋值。
运行变通程序,结果如下所示。
以上所得4组勾股数中,前两个数为连续整数。
【费马大定理】 在3元2次方程式(1)的基础上把指数拓展至n≥3,即得
以上3元n次方程在n≥3时不存在正整数解。
大约1637年左右,法国业余数学家费马(Fermat)在阅读丢番图(Diophantus)《算术》拉丁文译本时,在讨论不定方程(2)的那页书空白处写道:“将一个立方数分成两个立方数之和,或一个4次幂分成两个4次幂之和,或者一般地将一个高于二次的幂分成两个同次幂之和,这是不可能的。关于此,我确信已发现了一种美妙的证法,可惜这里空白的地方太小,写不下。”
费马当时是否真的想出了这一命题的证明,这是一个无法判定的千古之谜,也给后世数学家们留下了一道令人难堪的“作业”。
费马大定理是史上最精彩的一个数学谜题。证明费马大定理的过程是一部数学史诗。
费马大定理起源于300多年前,挑战人类3个世纪,多次震惊全世界,耗尽人类众多最杰出大脑的精力,也让千千万万业余者痴迷。
费马大定理被提出后,经历多人猜想辩证,最终在1995年被英国数学家怀尔斯(Andrew Wiles)彻底证明。2016年3月15日,挪威自然科学与文学院宣布将2016年阿贝尔奖(Abel Prize)授予怀尔斯,表彰他令人震惊的费马大定理证明。
【欧拉猜想】 把3元2次方程式(1)拓展到多元,数学大师欧拉曾有过一个猜想:对于n>2,一个n次幂要表示成n次幂之和,至少需要n个加数。
对于欧拉的这一猜想,有人用计算机举出以下反例:
智者千虑必有一失,看来数学天才也有出错的时候。
【问题】 在5个连续整数中两个较大数的平方和等于其余3个数的平方和,试求这5个连续整数。
【思考】 设5个连续整数正中的整数为m,两个较大数即为m+1,m+2,比m小的两个整数则为m-1,m-2,于是有方程式
(m-2)2+(m-1)2+m2=(m+1)2+(m+2)2
化简得
m2-12m=m(m-12)=0
因而得m=12,即有连续5个整数的平方和公式
沿着连续整数推广到任意2n+1个连续整数,有以下命题。
【命题2】 设n为正整数,若m=2n(n+1),则有
式(5)的文字表述为:对于任意正整数n,若2n+1个连续整数的正中整数为m=2n(n+1),则较大的n个整数的平方和与较小的n+1个整数的平方和相等。
【证明】 式(5)两边展开,整理得
式(6)化简得
m2-2n(n+1)m=m[m-2n(n+1)]=0
立得
因而命题2成立。
显然,式(4)是式(5)取n=2的特例。
据式(5),取n为正整数,可得相应的连续2n+1项的等式。
例如,取n=3,得m=24,于是对于7个连续整数[21,27],有
再如,取n=31,得m=1984,于是对于63个连续整数[1953,2015],有
特别指出,据式(5),取n=1,由式(7)可得m=4,于是对于3个连续整数3,4,5,有式32+42=52,这就是前面论及的最早勾股数组。因而可以说式(5)从连续项方面把这一勾股数组从3项扩展到了2n+1项。
1.4.2 长方体数
从式(1)的3元勾股数拓展到4元的长方体数,从二维的勾股三角形拓展到三维的长方体,是自然的引申与拓展。
如果长方体的棱长x,y,z和长方体对角线长w都是正整数,那么把它们叫作一组长方体数。显然,长方体数是勾股数的推广。
探求指定区间[a,b]内的长方体数组,即正整数x,y,z,w满足
其中,a≤x≤y≤z<w≤b。
输入区间[a,b](1≤a<b<10 000),输出区间内的长方体数组(x,y,z,w)。
1. 设计要点
如何求解式(10)这一涉及4变量x,y,z,w的2次不定方程?
为尽可能减少无效循环,根据a≤x≤y≤z<w≤b的约定,设置合适的循环参量。
注意到x2≤b2/3,据x≤y≤z,设置
x:a~sqrt(b∗b/3)
y:x~sqrt((b∗b-x∗x)/2)
z:y~sqrt(b∗b-x∗x-y∗y)
据以上x,y,z的取值直接计算w,若区间内存在整数w满足x∗x+y∗y+z∗z=w∗w,则找出一组满足条件式的整数x,y,z,w。
若输入的区间[a,b]范围比较小,可能不存在长方体数,为避免此时输出出错,设置统计解的变量k。若k=0,此时无解,则作必要的无解说明。
2. 程序设计
3. 程序运行示例与说明
由长方体数的定义,可知长方体数中x,y可能相等(如第二组解),同样y,z也可能相等。
如果要求长方体数中的3边互不相等,即x<y<z,只需在设置枚举循环时,设置y循环从初值y=x+1开始,设置z循环从初值z=y+1开始即可。
1.4.3 6个正整数问题
加德纳(Gardner)是美国著名的科普专栏作家,他在1970年的《科学美国人》杂志上提出一个一般问题:在一个长方体中,从一顶点出发的3条棱长、3个面的对角线长以及体对角线长这7条线段中,能否同时出现6个正整数?
加德纳提出的6个正整数是以下3个不同问题的综合形式。
①体对角线长是无理数,其余6条线段长是正整数。
②一条棱长是无理数,其余是正整数。
③一个面的对角线长是无理数,其余是正整数。
关于问题①,早在1719年,哈尔克(P.Halcke)已经发现,若长方体的棱长为117,44,240,则其面对角线的长度分别为267,244,125。
问题②也是有解的。例如,取长方体的棱长为a=124,b=957,c2=13 852 800,那么各个面对角线的长度是965,3724,3843;体对角线的长度是3845。除去c是无理数外,其余6个数都是正整数。
数学家欧拉已经得到过问题③的一些解。
棱长是(104,153,672),体对角线长是697,2个面对角线长是185,680;
棱长是(117,520,756),体对角线长是925,2个面对角线长是533,765。
下面编程探讨在指定区间[a,b]内搜寻6个整数,其中3个整数是长方体的长、宽、高,另3个整数是该长方体的6个面的对角线长。
1. 设计要点
注意到矩形两边相等时其对角线长非整数,即得6个数中不可能有相等的整数。
设长方体的长、宽、高分别为整数x,y,z(x<y<z),相对应面的对角线长分别为e1,e2,e3。
要使其各面对角线长e1,e2,e3都是整数,则x,y,z这3个数中每两个的平方和都应是平方数d1,d2,d3。也就是说,x,y,z中每两个都应是一组勾股数组的勾股数。
设置x,y,z(a≤x<y<z≤b)三重循环。
注意到x2<b2/2,设置
x:a~sqrt(b∗b/2)
据x<y<z,设置
y:x+1~sqrt(b∗b-x∗x)
z:y+1~sqrt(b∗b-x∗x)
计算x,y的平方和赋给d1,d1再开方取整赋给e1,即d1=x∗x+y∗y,e1=(long)(sqrt(d1)),若d1=e1∗e1,说明以x,y为边长的面的对角线长e1为整数。
同样,判别以x,z为边长与以y,z为边长的面的对角线长是否为整数。
当这3个判别同时满足时,输出一组“6个整数”的解。
2. 求长方体数6个整数程序设计
3. 程序运行示例与说明
请输入区间[a,b]的上下限a,b:1000,2019 NO1:1008,1100,1155 各面对角线长:L(1008,1100)=1492,L(1008,1155)=1533,L(1100,1155)=1595 NO2:1200,1260,1375 各面对角线长:L(1200,1260)=1740,L(1200,1375)=1825,L(1260,1375)=1865
以上输出了指定区间内两组长方体数的6个整数,即不同3边长与不同3面的对角线长的整数。
4. 优美长方体
如果有一个长方体,它的所有棱长、所有面对角线长和体对角线长都是正整数,就称它为优美长方体(perfect cuboid)。
是否存在优美长方体?这是一个著名的难题,至今还没有结论。
一个非常自然的想法,是在以上“6个正整数”设计解答的基础上继续探索“7个正整数”。现有的探索还没有确切的结果,无法断言是否存在优美长方体。