1. 程式人生 > >擴充套件的歐幾里得演算法 Extended Euclidean algorithm

擴充套件的歐幾里得演算法 Extended Euclidean algorithm

對於給定的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