▌简介
最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也有同样的记号。求最大公约数有多种方法,常见的有质因数分解法、短除法、辗转相除法、更相减损法。与最大公约数相对应的概念是最小公倍数,a,b的最小公倍数记为[a,b]。
中文名 | 最大公约数 | 基本概念 | 多个整数共有约数中最大的一个 |
外文名 | Greatest Common Divisor(GCD) | 应用学科 | 数学 |
别名 | Highest Common Factor(HCF) | 相对应 | 最小公倍数 |

▌基本概念
如果数a能被数b整除,a就叫做b的倍数,b就叫做a的约数。约数和倍数都表示一个整数与另一个整数的关系,不能单独存在。如只能说16是某数的倍数,2是某数的约数,而不能孤立地说16是倍数,2是约数。
“倍”与”倍数”是不同的两个概念,”倍”是指两个数相除的商,它可以是整数、小数或者分数。”倍数”只是在数的整除的范围内,相对于”约数”而言的一个数字的概念,表示的是能被某一个自然数整除的数。
几个整数中公有的约数,叫做这几个数的公约数;其中最大的一个,叫做这几个数的最大公约数。例如:12、16的公约数有1、2、4,其中最大的一个是4,4是12与16的最大公约数,一般记为(12,16)=4。12、15、18的最大公约数是3,记为(12,15,18)=3。
几个自然数公有的倍数,叫做这几个数的公倍数,其中最小的一个自然数,叫做这几个数的最小公倍数。例如:4的倍数有4、8、12、16,……,6的倍数有6、12、18、24,……,4和6的公倍数有12、24,……,其中最小的是12,一般记为[4,6]=12。12、15、18的最小公倍数是180。记为[12,15,18]=180。若干个互质数的最小公倍数为它们的乘积的绝对值。
▌求法
质因数分解法:把每个数分别分解质因数,再把各数中的全部公有质因数提取出来连乘,所得的积就是这几个数的最大公约数。把几个数先分别分解质因数,再把各数中的全部公有的质因数和独有的质因数提取出来连乘,所得的积就是这几个数的最小公倍数。
短除法:短除法求最大公约数,先用这几个数的公约数连续去除,一直除到所有的商互质为止,然后把所有的除数连乘起来,所得的积就是这几个数的最大公约数。短除法求最小公倍数,先用这几个数的公约数去除每个数,再用部分数的公约数去除,并把不能整除的数移下来,一直除到所有的商中每两个数都是互质的为止,然后把所有的除数和商连乘起来,所得的积就是这几个数的最小公倍数。短除法的本质就是质因数分解法,只是将质因数分解用短除符号来进行。短除符号就是除号倒过来。短除就是在除法中写除数的地方写两个数共有的质因数,然后落下两个数被公有质因数整除的商,之后再除,以此类推,直到结果互质为止(两个数互质)。而在用短除计算多个数时,对其中任意两个数存在的因数都要算出,其它没有这个因数的数则原样落下。直到剩下每两个都是互质关系。求最大公因数便乘一边,求最小公倍数便乘一圈。无论是短除法,还是分解质因数法,在质因数较大时,都会觉得困难。这时就需要用新的方法。
辗转相除法:辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法。用辗转相除法求几个数的最大公约数,可以先求出其中任意两个数的最大公约数,再求这个最大公约数与第三个数的最大公约数,依次求下去,直到最后一个数为止。最后所得的那个最大公约数,就是所有这些数的最大公约数。
更相减损法:也叫更相减损术,是出自《九章算术》的一种求最大公约数的算法,它原本是为约分而设计的,但它适用于任何需要求最大公约数的场合。《九章算术》是中国古代的数学专著,其中的“更相减损术”可以用来求两个数的最大公约数,即“可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。以等数约之。”
翻译成现代语言如下:
第一步:任意给定两个正整数;判断它们是否都是偶数。若是,则用2约简;若不是则执行第二步。
第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止。
则第一步中约掉的若干个2与第二步中等数的乘积就是所求的最大公约数。
其中所说的“等数”,就是最大公约数。求“等数”的办法是“更相减损”法。所以更相减损法也叫等值算法。
比较辗转相除法与更相减损术的区别:
1.都是求最大公因数的方法,计算上辗转相除法以除法为主,更相减损术以减法为主,计算次数上辗转相除法计算次数相对较少,特别当两个数字大小区别较大时计算次数的区别较明显。
2.从结果体现形式来看,辗转相除法体现结果是以相除余数为0则得到,而更相减损术则以减数与差相等而得到。
▌常见结论
1.如果两个自然数是互质数,那么它们的最大公约数是1,最小公倍数是这两个数的乘积。
2.如果两个自然数中,较大数是较小数的倍数,那么较小数就是这两个数的最大公约数,较大数就是这两个数的最小公倍数。
3.如果两个自然数中,较大数是较小数的倍数,那么较小数就是这两个数的最大公约数,较大数就是这两个数的最小公倍数。
4.两个自然数的最大公约数与它们的最小公倍数的乘积等于这两个数的乘积。
▌历史发展
在求解最大公约数的几种方法中,辗转相除法最为出名。辗转相除法是仍然在使用的历史最悠久的算法之一。它首次出现于几何原本(卷7命题1–2、卷10命题2–3)(大约公元前300年)。在卷7中用于整数,在卷10中用于线段的长度(也就是所说的实数,但是当时未有实数的概念)。卷10中出现的算法是几何的,两段线段a和b的最大公约数是准确测量a和b的最大长度。
这个算法可能并非欧几里得发明,而仅仅是将先人的结果编进他的几何原本。数学家、历史学家范德瓦尔登认为卷7的内容可能来自毕达哥拉斯学院出身的数学家写的关于数论的教科书。辗转相除法是被大约公元前375年的欧多克斯发现的,但也有可能更早之前就已经存在,因为欧几里得和亚里士多德的这两位历史名人著作中都出现了ἀνθυφαίρεσις一词(anthyphairesis, 意为“辗转相减”),几个世纪之后,辗转相除法又分别被中国人和印度人独立发现,主要用来解天文学中用到的丢番图方程以及指定准确的历法。5世纪末,印度数学家、天文学家阿里亚哈塔可能是因为辗转相除法在解丢番图方程时的高效率而称它为“粉碎机”。因为在中国,孙子算经中出现了此算法的一个特例中国剩余定理,但是辗转相除法的完整表述直到1247年秦九韶的数学九章中才出现。在欧洲,辗转相除法首次出现于克劳德·巴希特(英语:Claude Gaspard Bachet de Méziriac)的著作Problèmes plaisants et délectables的第二版在欧洲,辗转相除法广泛使用于丢番图方程和连分数。后来,英国数学家桑德森(英语:Nicholas Saunderson)将扩展欧几里得算法作为罗杰科茨(英语:Roger Cotes)对计算连分数的方法的研究发表。
19世纪,辗转相除法孕育出了一些新的数系,如高斯整数和艾森斯坦整数。1815年,高斯用辗转相除法证明高斯整数的分解是惟一的,他的研究发表于1832年。高斯在他的《算数研究》(published 1801)中,作为处理连分数的方法提到了这个算法。约翰·狄利克雷是第一个将辗转相除法作为数论的基础的数学家。狄利克雷提出,数论中的很多结论,如分解的惟一性,在任何使辗转相除法成立的数系中有效。狄利克雷的观点被理查德·戴德金修改和推广,他用辗转相除法研究代数整数。戴德金是第一个用高斯整数的分解惟一性证明费马平方和定理的数学家。戴德金还率先定义了欧几里得整环的概念。19世纪末,辗转相除法的辉煌逐渐被戴德金的理想取代。
辗转相除法的其他应用发展于19世纪。1829年,施图姆将辗转相除法用于施图姆序列(用于确定多项式的不同实根的个数的方法)。
辗转相除法是历史上第一个整数关系算法(英语:integer relation algorithm),即寻找两数的整数关系的算法。 近年来,出现了一些新颖的整数关系算法,如埃拉曼·弗格森(英语:Helaman Ferguson)和福尔卡德于1979年发表的弗格森-福尔卡德算法、以及与它相关的LLL算法(英语:Lenstra–Lenstra–Lovász lattice basis reduction algorithm)、HJLS算法以及PSLQ算法(英语:PSLQ algorithm)。
1969年,科尔(Cole)和戴维(Davie)基于辗转相除法创造了一种二人游戏,叫做欧几里得游戏。这个游戏有最优策略。游戏开始于两列分别为a和b个棋子组成的序列,玩家轮流从较长一列中取走较短一列棋子数量的m倍的棋子。如果两列棋子a和b分别由x和y个棋子组成,其中x大于y,那么玩家可以序列a的棋子数量减少为自然数x − my。最后率先将一列棋子清空的玩家胜出。