擴充套件的歐幾里得演算法 Extended Euclidean algorithm
阿新 • • 發佈:2018-12-15
對於給定的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