那么多废话,其实就是为了求通解。一条不等式 得到两个未知数的一个通解 。
分析:
设如下两个方程:
ax+by = gcd(a,b) = d;
bx’+(a%b)y’ = gcd(b,a%b);
那么由重要结论(1)有gcd(a,b) = gcd(b,a %b),
那么ax+by = bx’+(a%b)y’ = bx’ +(a – [a/b]*b)y’ = ay’ + b(x’ – [a/b]y’),
由恒等关系有: x = y’ , y = (x’ – [a/b]y’),[a/b]表示a/b的值向下取整。
……..
那么现在就可以用exgcd(a,b,d,x,y)表示方程ax+by = d,那么由上面一直递归下去,直到 b = 0,递归结束,此时 d = gcd(a,0) =a , x = 1,y =0;
【因为 ax+0*y = gcd(a,0)嘛~】
拓展欧几里得的几个应用
求解不定方程
例如:求解不定整数方程ax+by = c
求ax+by = c, 令d =gcd(a,b);
那么(a / d ) * x + (b / d )* y = c / d
因为(a / d )、(b / d ) 、x、y都是整数,那么保证原不定整数方程ax+by = c有解的充要条件就是c / d为整数,即c是gcd(a,b)的倍数。
如果有解,那么令 K = c/d;
那么,对方程aX+bY = d;假设有拓展欧几里得求出一组解为(X0,Y0),那么aX0+bY0 = d;等式两边同时乘以K,即K*( aX0+bY0 ) = d*K = c;由恒等关系,原方程的解(x0,y0):
X0 = KX0 = c/d * X0,y0 = KY0 = c/d *Y0。
不定方程的通解:
【拓展欧几里得 化简和 通解。】重点:若(x0,y0)是不定整数方程ax+by = c的一组解,则他的任意整数解都可以表示成(x0+ kb’, y0-ka’),其中a’ = a/gcd(a,b), b’ = b/gcd(a,b).