【Math】最大公约数(gcd)

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

最大公约数

最大公约数即为 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 da   db ,则 c = a − b k c=a-bk c=abk c d = a d − b d k \frac{c}{d}=\frac{a}{d}-\frac{b}{d}k dc=dadbk 由右边的式子可知 c d \frac{c}{d} dc 为整数,即 d ∣ c d|c dc 所以对于 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) db   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=dadbk 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=

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值