扩展欧几里得
方程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