最大公约数
最大公约数即为 Greatest Common Divisor,常缩写为 gcd。
一组数的公约数,是指同时是这组数中每一个数的约数的数。而最大公约数,则是指所有公约数里面最大的一个。
那么如何求最大公约数呢?我们先考虑两个数的情况。
欧几里德算法
如果我们已知两个数 a a a 和 b b b ,如何求出二者的最大公约数呢?
不妨设 a > b a > b a>b
我们发现如果 b b b 是 a a a 的约数,那么 b b b 就是二者的最大公约数。
下面讨论不能整除的情况,即 a = b × q + r a = b \times q + r a=b×q+r ,其中 r < b r < b r<b 。
我们通过证明可以得到 gcd ( a , b ) = gcd ( b , a m o d b ) \gcd(a,b)=\gcd(b,a \bmod b) gcd(a,b)=gcd(b,amodb) ,过程如下:
设 a = b k + c a=bk+c a=bk+c ,显然有 c = a m o d b c=a \bmod b c=amodb 。设 d ∣ a d ∣ b d|a\ \ \ d|b d∣a d∣b ,则 c = a − b k c=a-bk c=a−bk c d = a d − b d k \frac{c}{d}=\frac{a}{d}-\frac{b}{d}k dc=da−dbk 由右边的式子可知 c d \frac{c}{d} dc 为整数,即 d ∣ c d|c d∣c 所以对于 a , b a,b a,b 的公约数,它也会是 a m o d b a \bmod b amodb 的公约数。
反过来也需要证明
设 d ∣ b d ∣ ( a m o d b ) d|b\ \ \ d|(a \bmod b) d∣b d∣(amodb) ,我们还是可以像之前一样得到以下式子 a m o d b d = a d − b d k \frac{a\bmod b}{d}=\frac{a}{d}-\frac{b}{d}k damodb=da−dbk a m o d b d + b d k = a d \frac{a\bmod b}{d}+\frac{b}{d}k=\frac{a}{d} damodb+dbk=

本文详细介绍了欧几里德算法求解最大公约数的方法,包括基本原理、多个数的最大公约数求解,以及最小公倍数的计算。同时,深入探讨了扩展欧几里得定理,用于求解特定线性方程的解。
最低0.47元/天 解锁文章
6775

被折叠的 条评论
为什么被折叠?



