码迷,mamicode.com
首页 > 其他好文 > 详细

扩展欧几里得

时间:2014-09-14 10:08:36      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   div   sp   log   c   r   bs   

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

 

扩展欧几里得

标签:style   blog   color   div   sp   log   c   r   bs   

原文地址:http://www.cnblogs.com/justPassBy/p/3970702.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!