0%

辗转相除法求最大公约数

辗转相除法求最大公约数

怕不是上了个假大学系列第二篇。

问题

求252和105的最大公约数。

答案

21

复习

最大公约数:两个整数的最大公约数是能够同时整除它们的最大的正整数。

辗转相除法: 两个正整数a和b(a>b),它们的最大公约数等于a除以b的余数c和b之间的最大公约数。

解题

1
2
3
4
5
6
252 mod 105 = 42
105 mod 42 = 21
42 mod 21 = 0

令求最大公约数方法为f(a,b)即:
f(252,105) = f(105,42) = f(42,21) = 21

理解

1
2
3
4
5
6
7
8
9
步骤1 252 mod 105 = 42
步骤2 105 mod 42 = 21
步骤3 42 mod 21 = 0

步骤1即在尝试判断105是不是252的最大公约数,由于有余数42即105不是252的最大公约数。

由于252对105取模即除去余数后的值(252-42=210)必然能整除105。

由以上原因即可以将问题转化为求105和42的最大公约数。(105能整除105,252-42能整除105,假设105和42的最大公约数为X即252和105肯定能整除X)以此逐渐迭代即可求得252和105的最大公约数。

动画说明

辗转相除法的演示动画:两条线段长分别可表示252和105,则其中每一小分段长代表最大公约数21。如动画所示,只要辗转地从大数中减去小数,直到其中一段的长度为0,此时剩下的一条线段的长度就是252和105的最大公因数。

辗转相除法

参考 & 引用

辗转相除法 - 维基百科,自由的百科全书 (wikipedia.org)

漫画算法:辗转相除法是什么鬼? - 知乎 (zhihu.com)