扩展欧几里得算法的原理
扩展欧几里得算法即欧几里得算法的一个变形。我们先来看《算法导论》上的一段伪代码。
EXTENDED-EUCLID
if b==0
return(a,1,0)
else(d_,x_,y_)=EXTENDED-EUCLID(b,a mod b)
(d,x,y)=(d_,y_,x_-round(a/b)*y_)
return (d,x,y)
我们可以发现递归到最后是求出了这样一个:使得
a=ax+by
a
=
a
x
+
b
y
满足的x和y。也就是1,0.
最后通过
d_=bx_+(amodb)y_
d
_
=
b
x
_
+
(
a
mod
b
)
y
_
推出
d=ax+by
d
=
a
x
+
b
y
。
至于这个推论过程为什么成立,我们可以发现:
当
x=y_
x
=
y
_
和
y=x_−round(a/b)y_
y
=
x
_
−
r
o
u
n
d
(
a
/
b
)
y
_
时显然成立。