【演算法分析與設計】輾轉相除法

星拱北辰發表於2020-02-06

輾轉相除法

輾轉相除法又稱歐幾里德演算法,是指用於計算兩個正整數a,b的最大公因數的一種演算法。

廣泛應用於數學和計算機兩個方面。

計算公式:gcd(a, b) = gcd(b, a%b)

高一數學必修三就有講了,學起來也很簡單啦……

輾轉相除法的一些特點

  • 除法為主。
  • 兩整數差值較大時運算次數較少
  • 相除餘數為0時得到結果。
  • 迴圈表示的遞推式子,也可以遞迴實現。

輾轉相除法的證明

設兩數為a, b(a>b),用gcd(a, b)表示a, b的最大公約數,r=a (mod b) 為a除以b的餘數,k為a除以b的商,即a÷b=kr。輾轉相除法即是要證明gcd(a,b)=gcd(b,r)。

第一步:令c=gcd(a,b),則設a=mc,b=nc。

第二步:根據前提可知r =a-kb=mc-knc=(m-kn)c。

第三步:根據第二步結果可知c也是r的因數。

第四步:可以斷定m-kn與n互質(假設m-kn=xd,n=yd (d>1),則m=kn+xd=kyd+xd=(ky+x)d,則a=mc&#

相關文章