作者 | 大小吴
“
今天大小吴来和大家聊一聊最大公因数的前世今生。
1 什么是最大公因数
最大公因数(Greatest Common Divisor),也称最大公约数、最大公因子,指两个或多个整数共有因数中最大的一个。,的最大公因数可记为或,多个整数的最大公因数也有同样的记号。求最大公因数有多种方法,比如我们小学就学过的质因数分解法、短除法。
那么你是否有这样的疑问:追本溯源,最大公因数最早出现在哪里呢?
2 欧几里得与辗转相除法
实际上,最早系统研究最大公因数问题的是古希腊数学家欧几里得。只不过那时还没有系统的代数学,相对应地,几何学明显地从数学中分离出来,并在希腊科学中占统治地位,其威力之大,以致于纯算术的或代数的问题都被转译为几何语言。
而欧几里得在《几何原本》第Ⅶ卷中正是运用了线段及其长度解释了最大公因数问题,并凝练出了世界上最早的算法——辗转相除法(也称欧几里得算法),具体可见定义Ⅶ.12、命题Ⅶ.1和命题Ⅶ.2.
“
定义Ⅶ.12:只能被作为公约的一个单位量所测尽(整除)的几个数称为互质数。
“
命题Ⅶ.1:设有不等两数,从大数中连续减去小数直到余数小于小数,再从小数中连续减去余数直到小于余数,这样一直下去,如果余数测不尽其前一个数,直到最后的余数为一个单位,那么该二数互质。
如上图,有两不等数和,连续从大数中减去小数直到小于小数,再从小数中连续减去余数直到小于余数,这样一直下去,余数总是不能测尽前一个数,直到最后的余数为一个单位。
求证:和互质,即只有一个单位能测尽和.
证明:如果和不互质,那么总有某个数测尽它们,令其为(这里).
令:测量得,余下小于. 令:测量得,余下小于. 令:测量得,余下单位量.
因为测尽,测尽,所以:测尽.
又因为测尽,所以:它测尽余值.
同理可得也可以测尽余值.
最终可得可以测尽单位量,这是不可能的,因为而。
因此:和只能被作为公约的一个单位量所测尽,即:和互质(定义Ⅶ.12)。
- 现代数学语言已经不再沿用欧几里得在《几何原本》中的术语了,“测得”、“测尽”两个词已用“除”、“整除”代替。这一命题的证明已经运用了辗转相除法:开始于两个数,从较大的数中重复减去较小的数,只不过这里为了说明两数互质,它假定1是辗转相除法的最终结果。
“
命题Ⅶ.2:给定两个不互质的数,可以(用辗转相除法)找到它们的最大公因数。
如上图,设和为给定的两个不互质的数。现在要求的是:找到和的最大公因数。
这里需分类讨论:
①如果能测尽,则必然是和的最大公因数。
②如果测不尽,那么:就用余数去量,如果量不尽,又用后边的余数去量前边的余数,直到后边的余数测尽前边的余数。
这最后的余数不是一个单位,否则和互质,这与假设矛盾。所以:某数可以测尽它前面数的余数。
这里和命题Ⅶ.1的操作类似,测得,测得,设最后测尽.同样地,可推得同时测尽和,即是和的一个公因数。
以下进一步说明它一定是最大的。
如果不是和的最大公因数,那么必有一个大于的某数同时测尽和.
那么,因为测尽,测尽,所以也测尽,又它测尽整个,所以它测尽余值.同理,测尽余值,但这是不可能的,因为较大数不可能测尽较小数,矛盾。
所以没有大于测尽和的数,即是和的最大公因数。
在这一命题中,再次使用了辗转相除法求两个不互质的数的最大公因数,大数反复减小数,直到余数小于小数。比如要求,首先,从104中反复减去40,直到余数(24)小于40,即再从40中反复减去24得余数16,即再从24中反复减去16得余数8,即最后停止,因为8可以整除16.于是我们找到了这里其实也可以用图形来解释这一过程:如图是边长为40和104的矩形,求就等价于这样一个问题:找一个最大的,边长为的正方形使它能够填满整个矩形,那么即有
所以我们可以作出下图:
最终得到两个边长为8的正方形,此正方形就一定是能够填满整个矩形的正方形中最大的那一个,即。
欧几里得在《几何原本》中对辗转相除法的讨论一直可以延申到对无理量和不可公度量的分析中去(同样也是用几何作图的方法),十分有趣,之后我们会再另写一篇加以讨论。
辗转相除法用现代数学语言可以描述为
设两数,,则
(不妨设 且,不为0,指求余运算,为除以的余数)
即两个正整数的最大公约数等于其中较小的那个数和两数相除余数的最大公因数。
因此辗转相除法就是以除数和余数反复做除法运算,当余数为0时,取当前算式除数即为最大公因数。
3 《九章算术》与更相减损术
除了西方,其实在古老的东方,我国古代聪明的数学家们也早已揭示了最大公因数的秘密——运用更相减损术求最大公因数。
提到更相减损术,就不得不提我国古代数学巨著《九章算术》。《九章算术》内容十分丰富,全书总结了战国、秦、汉时期的数学成就,成于公元一世纪左右,其作者已不可考。根据研究,西汉的张苍、耿寿昌曾经做过增补。最后成书最迟在东汉前期,但是其基本内容在西汉后期已经基本定型。
更相减损术是《九章算术》中一种求最大公因数的算法,它原本是为约分而设计的,但它同时也适用于求两个数的最大公因数。《九章算术》原文记载:
“
可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。以等数约之。
这句古文的意思是:
- (如果需要对分数进行约分,那么)可以折半的话,就折半(也就是用2来约分)。如果不可以折半的话,那么就比较分母和分子的大小,用大数减去小数,互相减来减去,一直到减数与差相等为止,用这个相等的数字来约分。
举个例子,用更相减损术求104和40的最大公因数.
- 由于104和40是偶数,则各取一半得到52和20.
- 由于52和20还是偶数,则继续取一半得到26和10.
- 由于26和10还是偶数,重复上述操作得到13和5.
- 由于13和5不是偶数,则以大数减小数,得
得到最后减数和差都是1,则停止辗转相减。
所以,104和40的最大公因数等于1乘以第一、二、三步中约掉的3个2,即
可以发现,辗转相除法和更相减损术一个用除法,一个用减法,但细想其原理则是异曲同工的,其作为求最大公因数的算法,其结果也是殊途同归的。不管是东方还是西方,都蕴藏着灿烂辉煌的数学成就,凝结了人类智慧的结晶。
参考文献[1]欧几里得.几何原本[2]九章算术