一.扩展欧几里德算法
由裴蜀定理已知,若a,b是整数,且gcd(a,b)=d,那么一定存在整数x,y,使ax+by=d成立。
这样就带来了一个问题如何求解gcd(a,b)=ax+by中的x和y值? 我们这里使用扩展欧几里得算法来求解
x和y值。
1.1 扩展欧几里德算法求解裴蜀定理
在欧几里得算法里,递归部分的核心是这样的: gcd(a,b) = gcd(b ,a mod b), 我们将由此得出x,y相关的递归关系。
由裴蜀定理可知:
(1)gcd(a,b)=ax+by
(2)gcd(b,a mod b)=bx’+(a mod b)y’
其中 a mod b = a - [a/b] * b , 所以(2)式 变为 gcd(b,a mod b)=bx’+( a - [a/b] * b ) * y’
gcd(b,a mod b)=bx’+( a - [a/b] * b ) * y’ 整理得 gcd(b,a mod b) = a * y’+ b * (x’- y’ * [a/b])
此时(1)、(2)式变为如下所示:
&#