EXGCD 是用于求解形如 ax+by=gcd(a,b) 的不定方程的算法.
考虑求解 GCD 的过程,我们容易得到 bx′+(amodb)y′=gcd(b,amodb)=gcd(a,b)=ax+by.
我们有
ax+by=bx′+(amodb)y′=bx′+(a−⌊a/b⌋)y′=ay′+b(x′−⌊a/b⌋y′)
比对系数可得,x=y′,y=(x′−⌊a/b⌋y′).然后递归计算 bx′+(amodb)y′=gcd(b,amodb) 这个子问题.系数每次至少减半,那么算法的时间复杂度就是 O(loga).