我们要解决一个这样的问题:(ax+by=gcd(a, b))
在欧几里得算法的最后一步,即 (b=0) 时,显然有一对整数 (x=1, y=0) 满足 (a imes 1+b imes 0=gcd(a, 0))。
我们假设有 (x_2, y_2) 满足 (bx_2+(a mod b)y_2=gcd(b, amod b))。
由于 (gcd(a, b)=gcd(b, amod b)),故 (ax+by=bx_2+(a mod b)y_2)
又因为 ((a mod b) = a - leftlfloordfrac{a}{b} ight floor imes b)。
故 (ax+by=bx_2+(a - leftlfloordfrac{a}{b} ight floor b)y_2)
(ax+by=bx_2+ay_2-leftlfloordfrac{a}{b} ight floor by_2)
(ax+by=ay_2+b(x_2-leftlfloordfrac{a}{b} ight floor y_2))
由于 (a=a, b=b),故 (x=y_2, y=x_2-leftlfloordfrac{a}{b} ight floor y_2),这样从 (x=1, y=0) 一步一步就可以推到 (ax+by=gcd(a, b)) 的解。
对于一般的方程 (ax+by=c),当且仅当 (gcd(a,b) | c) 时有解。
我们可以先求出 (ax+by=gcd(a, b)) 的特殊解 (x_0, y_0),然后令 (x = x_0 imes dfrac{c}{gcd(a, b)}, y=y_0 imes dfrac{c}{gcd(a, b)})。
此时 (ax+by=c),(x, y) 可能为负数,有的题目会要求 (x, y) 为正整数,我们可以把原式进行修改,变为 (ax+by+kdfrac{ab}{gcd(a, b)}-kdfrac{ab}{gcd(a, b)}=c),(a(x+kdfrac{b}{gcd(a, b)})+b(y-kdfrac{a}{gcd(a, b)})=c),即 (x=x+kdfrac{b}{gcd(a, b)}, y=y-kdfrac{a}{gcd(a, b)}),(k) 为任意整数。