OSDN Git Service

Update gcd.md
authorRan Yi <42791146+i-Yirannn@users.noreply.github.com>
Thu, 15 Nov 2018 11:23:09 +0000 (19:23 +0800)
committerGitHub <noreply@github.com>
Thu, 15 Nov 2018 11:23:09 +0000 (19:23 +0800)
docs/math/gcd.md

index 400404d..42b5ff7 100644 (file)
 我们发现如果 $b$ 是 $a$ 的约数,那么 $b$ 就是二者的最大公约数。
 下面讨论不能整除的情况,即 $a = b \times q + r$,其中 $r < b$。
 
-我们通过证明可以得到$gcd(a,b)=gcd(b,a\,mod\,b)$,过程如下:
+我们通过证明可以得到$\gcd(a,b)=\gcd(b,a \mod b)$,过程如下:
 
 * * *
 
-设$a=bk+c$,显然有$c=a\,mod\,b$。设$d|a\ \ \ d|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$的公约数。
+由右边的式子可知$\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$的公约数。
+设$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,a\mod b)$
 
 既然得到了$\gcd(a, b) = \gcd(b, r)$,这里两个数的大小是不会增大的,那么我们也就得到了关于两个数的最大公约数的一个递归求法。
 
@@ -47,7 +47,7 @@ int gcd(int a, int b) {
 }
 ```
 
-递归至$b==0$(即上一步的$a\,mod\,b==0$) 的情况再返回值即可。
+递归至`b==0`(即上一步的`a%b==0`) 的情况再返回值即可。
 
 ### 多个数的
 
@@ -85,34 +85,34 @@ $p_1^{k_{\max(a_1, b_1)}}p_2^{k_{\max(a_2, b_2)}} \cdots p_s^{k_{\max(a_s, b_s)}
 
 ## EXGCD - 扩展欧几里得定理
 
-目的:求$ax+by=gcd(a,b)$的一组可行解
+目的:求$ax+by=\gcd(a,b)$的一组可行解
 
 ## 证明
 
 设
 
-$ax_1+by_1=gcd(a,b)$
+$ax_1+by_1=\gcd(a,b)$
 
-$bx_2+(a\,mod\,b)y_2=gcd(b,a\,mod\,b)$
+$bx_2+(a\mod b)y_2=\gcd(b,a\mod b)$
 
 由欧几里得定理可知:
-$gcd(a,b)=gcd(b,a\,mod\,b)$
+$\gcd(a,b)=\gcd(b,a\mod b)$
 
 所以
-$ax_1+by_1=bx_2+(a\,mod\,b)y_2$
+$ax_1+by_1=bx_2+(a\mod b)y_2$
 
 又因为
-$a\,mod\,b=a-(\lfloor\frac{a}{b}\rfloor*b)$
+$a\mod b=a-(\lfloor\frac{a}{b}\rfloor\times b)$
 
 所以
-$ax_1+by_1=bx_2+(a-(\lfloor\frac{a}{b}\rfloor*b))y_2$
+$ax_1+by_1=bx_2+(a-(\lfloor\frac{a}{b}\rfloor\times b))y_2$
 
-$ax_1+by_1=ay_2+bx_2-\lfloor\frac{a}{b}\rfloor*by_2=ay_2+b(x_2-\lfloor\frac{a}{b}\rfloor y_2)$
+$ax_1+by_1=ay_2+bx_2-\lfloor\frac{a}{b}\rfloor\times by_2=ay_2+b(x_2-\lfloor\frac{a}{b}\rfloor y_2)$
 
 因为 $a=a,b=b$ ,所以
 $x_1=y_2,y_1=x_2-\lfloor\frac{a}{b}\rfloor y_2$ 
 
-将 $x_2,y_2$ 不断代入递归求解直至 GCD(最大公约数,下同) 为 $0$ 递归 $x=1,y=0$ 回去求解。
+将 $x_2,y_2$ 不断代入递归求解直至 GCD(最大公约数,下同) 为 `0` 递归 `x=1,y=0` 回去求解。
 
 ```cpp
 int Exgcd(int a, int b, int &x, int &y) {