设a与b是非零整数,g=gcd(a,b).方程ax+by=g总是有一个整数解(x1,y1) (可利用扩展欧几里得算法解出),则方程的每一个解可由(x1+k*b/g,y1-k*a/g)得到,其中k可为任意整数。
证明:先证明ax+by=1的情况(此时设gcd(a,b)=1)。 (1)
若(x,y)是(1)式的解,则(x+kb,y-ka)也是(1)式的解,这个显而易见。
当然,若(x1,y1)和(x2,y2)都是(1)式的解,那么
ax1+by1=1 (2)
ax2+by2=1 (3)
通过x2乘(2)式减去x1乘(3)式,可得 by1*x2-by2*x1=x2-x1 (4)
通过y2乘(2)式减去y1乘(3)式,可得 ax1*y2-ax2*y1=y2-y1 (5)
不妨令k=x2*y1-x1*y2,代入(4)、(5)式
推出 x2=x1+kb,y2=y1-ak
似乎这都是理所当然的做法
再讨论ax+by=gcd(a,b)时只需等式两边都除一下gcd(a,b)即可
时间: 2024-10-15 23:12:06