# 扩展欧几里得算法

# 欧几里得算法 Euclidean Algorithm

# 定理

对于非负整数x,y\forall 非负整数x,y,均有gcd(x,y)=gcd(y,x%y)gcd(x, y) = gcd(y, x \% y)

# 证明

不防设 x>yx > y. 令q=x/y,r=x%yq=x/y, r=x\%y. (k 为正整数)
x=qy+r,r=xqy\Rightarrow x=qy + r, r=x-qy.
不妨设gcd(x,y)=d1,gcd(y,r)=d2gcd(x, y)=d_{1}, gcd(y, r) = d_{2},即需证明d_{1}=d_

  1. 由于gcd(x,y)=d1gcd(x,y)=d_{1},则d1x,d1y\Rightarrow d_{1}|x,d_{1}|y(x 可以整除 d,y 可以整除 d)
    d1(xqy)d1r\Rightarrow d_{1}|(x-qy) \Leftrightarrow d_{1}|r.
    d1y,d1r\because d_{1}|y, d_{1}|r
    \therefore d_{2}|d_

  2. 由于gcd(y,r)=d2gcd(y,r)=d_{2},则d2y,d2r\Rightarrow d_{2}|y,d_{2}|r

    d2(qy+r)d2x\Rightarrow d_{2}|(qy+r) \Leftrightarrow d_{2}|x.
    d2x,d2y\because d_{2}|x, d_{2}|y
    d1d2\therefore d_{1}|d_{2}
    d1d_{1}=d_

# 实现

int gcd(int a, int b){
    return b == 0 ? a : gcd(b, a % b);
}

#

# 裴蜀定理

# 定理

对于任意整数aba、bmm,如
ax+by=max+by=m
有整数解时,当且仅当mmgcd(xy)gcd(x,y) 的倍数
ab\Leftrightarrow a、b 能凑出的最小正整数为gcd(a,b)gcd(a,b)

# 证明

如果aabb 中有一个是 0,比如a=0a=0,那么它们两个的最大公约数是𝑏𝑏。这时裴蜀等式变成𝑏𝑦=𝑚𝑏𝑦=𝑚,它有整数解(𝑥,𝑦)(𝑥,𝑦) 当且仅当mmbb 的倍数,而且有解时必然有无穷多个解,因为xx 可以是任何整数。定理成立.
以下设aba、b 均不为 0.

# 扩展欧几里得算法 Extended Euclidean Algorithm

# 定理

# 证明

Edited on Views times

Give me a cup of [coffee]~( ̄▽ ̄)~*

Value WeChat Pay

WeChat Pay