扩展欧几里得算法的推导与证明
扩展欧几里得算法又称 EXGCD 算法,性质是 \(\text{exgcd}(a,b)=(g,x,y)\), 其中\(g=\text{gcd}(a,b), ax+by=g\). 这是贝祖定理(裴斶定理)的一个表述。
我们来推导一下。鉴于欧几里得算法本身是递归的,我们采取数学归纳法相似的方法推导。
首先,\(\text{exgcd}(0,a)=(g,0,1)\),这是显然的。
其次,如果我们知道了 \(\text{exgcd}(b,a \mod b)=(g,x_1,y_1)\), 欲推导 \(\text{exgcd}(a,b)=(g,x,y)\)。
\(\text{exgcd}(b,a \mod b)=(g,x_1,y_1)\) 等价于 \(g = bx_1 + (a \mod b)y_1 = bx_1 + (a-b\lfloor\dfrac{a}{b}\rfloor)y_1\).
我们以 \(a,b\) 为主元重新整理,$bx_1 + (a-b\lfloor\dfrac{a}{b}\rfloor)y_1 = x_1b + y_1a -y_1\lfloor\dfrac{a}{b}\rfloor b = (y_1)a+(x_1-y_1\lfloor\dfrac{a}{b}\rfloor)b $
所以 \(\text{exgcd}(a,b)=(g,y_1,x_1-y_1\lfloor\dfrac{a}{b}\rfloor)\).
正确性显然。