# 扩展欧几里得算法
# 欧几里得算法 Euclidean Algorithm
# 定理
对于∀非负整数x,y,均有gcd(x,y)=gcd(y,x%y)
# 证明
不防设
x>y. 令q=x/y,r=x%y. (k 为正整数)
⇒x=qy+r,r=x−qy.
不妨设gcd(x,y)=d1,gcd(y,r)=d2,即需证明d_{1}=d_
由于gcd(x,y)=d1,则⇒d1∣x,d1∣y(x 可以整除 d,y 可以整除 d)
⇒d1∣(x−qy)⇔d1∣r.
∵d1∣y,d1∣r
\therefore d_{2}|d_
由于gcd(y,r)=d2,则⇒d2∣y,d2∣r
⇒d2∣(qy+r)⇔d2∣x.
∵d2∣x,d2∣y
∴d1∣d2
固d1=d_
![]()
# 实现
| int gcd(int a, int b){ |
| return b == 0 ? a : gcd(b, a % b); |
| } |
# 裴蜀定理
# 定理
对于任意整数a、b 和m,如
ax+by=m
有整数解时,当且仅当m 为gcd(x,y) 的倍数
⇔a、b 能凑出的最小正整数为gcd(a,b)
# 证明
如果a 和b 中有一个是 0,比如a=0,那么它们两个的最大公约数是b。这时裴蜀等式变成by=m,它有整数解(x,y) 当且仅当m 是b 的倍数,而且有解时必然有无穷多个解,因为x 可以是任何整数。定理成立.
以下设a、b 均不为 0.
# 扩展欧几里得算法 Extended Euclidean Algorithm
# 定理
# 证明