首页 > 代码库 > 扩展欧几里得

扩展欧几里得

方程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

 

扩展欧几里得