扩展的欧几里得算法 Extended Euclidean algorithm

版权声明:转载请附上文章地址 https://blog.csdn.net/weixin_38134491/article/details/84989252

对于给定的a和b,扩展的欧几里得算法不仅计算出最大公因子d,而且还有另外两个整数 x 和 y,满足方程:

ax+by=d = gcd(a,b) ,  显然a 和 b 具有相反的正负号。

几个例子: a=42, b=30时,这个方程结果如下表

看上面一个表我们发现所有的结果都是6的倍数,原因是 42x+30y=6(7x+5y),所以结果都是6的倍数

那么我们得出一个结论: 

对于给定的整数a和b,ax+by的最小正整数为  gcd(a,b)

上面内容只是铺垫,那如何扩展欧几里得算法才能计算出(x,y,d)呢??

a=q1b+ r1 .............r1 = ax1+ by1

b=q2r1+ r2 ...........r2= ax2 + by2

r1=q3r2+r3............r3= ax3+ by3

............

rn-2=qnrn-1+ rn ........rn= axn+byn

rn-1=qn+1rn+0

下面直接举个例子说明更直观:

https://mp.csdn.net/postedit/84975892

猜你喜欢

转载自blog.csdn.net/weixin_38134491/article/details/84989252