问题
求两个整数x,y,满足不定方程:
a×x+b×y=gcd(a,b) 其中a,b是正整数,gcd(a,b)是a,b的最大公约数。
解法
扩展欧几里得算法来源于最大公约数的特性,即对于正整数a,b的最大公约数gcd(a,b),必然存在整数x,y满足本题的等式。
根据上一节Euclid中的迭代式:
a0b0⋯akbk====abbk−1ak−1modbk−1 存在相应的整数xk−1,yk−1,xk,yk满足:
ak−1×xk−1+bk−1×yk−1=gcd(ak−1,bk−1)=gcd(ak,bk)=ak×xk+bk×yk 变换等式得到:
注意到两正整数的取模运算满足:
可以推导出:
由于等式两边括号外的参数完全相同,可得:
Exgcd
源码
测试