OSDN Git Service

加入内容
author洛水·锦依卫 <32975657+LuoshuiTianyi@users.noreply.github.com>
Wed, 7 Nov 2018 11:46:10 +0000 (19:46 +0800)
committerGitHub <noreply@github.com>
Wed, 7 Nov 2018 11:46:10 +0000 (19:46 +0800)
正好复习gcd补一下= =,内容如下:

加入gcd(a,b)=gcd(b,a%b)证明过程

补充多个数的最小公倍数

docs/math/gcd.md

index 1fb54de..8e0173b 100644 (file)
 我们发现如果 $b$ 是 $a$ 的约数,那么 $b$ 就是二者的最大公约数。
 下面讨论不能整除的情况, $a = b \times q + r$,其中 $r < b$。
 
-不难证明,$\gcd(a, b) = \gcd(b, r)$,这里两个数的大小是不会增大的,我们得到了关于两个数的最大公约数的一个递归求法。
+我们通过证明可以得到$gcd(a,b)=gcd(b,a\,mod\,b)$,过程如下:
+
+---
+
+设$a=bk+c$,显然有$c=a\,mod\,b$。设$d|a\ \ \ d|b$,则
+$$c=a-bk$$
+$$\frac{c}{d}=\frac{a}{d}-\frac{b}{d}k$$
+由右边的式子可知$\frac{c}{d}$为整数,即$d|c$所以对于$a,b$的公约数,它也会是$a\,mod\,b$的公约数。
+
+反过来也需要证明
+
+设$d|b\ \ \ d|(a\,mod\,b)$,我们还是可以像之前一样得到以下式子
+$$\frac{a\,mod\,b}{d}=\frac{a}{d}-\frac{b}{d}k$$
+$$\frac{a\,mod\,b}{d}+\frac{b}{d}k=\frac{a}{d}$$
+因为左边式子显然为整数,所以$\frac{a}{d}$也为整数,即$d|a$,所以$b,a\,mod\,b$的公约数也是$a,b$的公约数。
+
+既然两式公约数都是相同的,那么最大公约数也会相同
+
+所以得到式子
+$$gcd(a,b)=gcd(b,a\,mod\,b)$$
+
+既然得到了$\gcd(a, b) = \gcd(b, r)$,这里两个数的大小是不会增大的,那么我们也就得到了关于两个数的最大公约数的一个递归求法。
 
 ### 多个数的
 
@@ -52,3 +73,4 @@ $$
 要求两个数的最小公倍数,先求出最大公约数即可。
 
 ### 多个数的
+可以发现,当我们求出两个数的$gcd$时,求最小公倍数是$O(1)$的复杂度。那么对于多个数,我们其实没有必要求一个共同的最大公约数再去处理,最直接的方法就是,当我们算出两个数的$gcd$,或许在求多个数的$gcd$时候,我们将它放入序列对后面的数继续求解,那么,我们转换一下,直接将最小公倍数放入序列即可