扩展欧几里得

方程ax + by = c是否有解,当且仅当c是gcd(a,b)的倍数时,方程有解(根据数论中的贝祖定理)。
设t = c / gcd(a,b),  我们可以用扩展欧几里得求出方程ax + by = gcd(a,b)的一组解(x1,y1)
那么方程ax + by = c的一组解是(tx1,ty1) 设为(X,Y)
那么方程的其它解是(X+kaa,y-kbb)  ,  aa = a / gcd(a,b), bb = b / gcd(a,b),   k 为任意整数。
为什么呢? 
设方程的另一组解为X1,Y1.
aX + bY = aX1 + bY1  --->  a(X-X1) = b(Y1-Y) 方程两边同除gcd(a,b)---> aa(X-X1) = bb(Y1-Y)
这时aa和bb互素(除1之外没有公约数),所以aa是(Y1-Y)的倍数,bb是(X-X1)的倍数(这一步怎么来的,我也不是很清楚)
设Y1 - Y = kaa, X - X1 = kbb,
所以X = X1 + kbb, Y = Y1 - kaa

 

posted @ 2014-09-14 09:54  justPassBy  阅读(172)  评论(0编辑  收藏  举报