1. 程式人生 > >[轉]輾轉相除法 的 證明

[轉]輾轉相除法 的 證明

進行 繼續 現在 而且 最大 輾轉相除法 得到 搜索 cnblogs

挑戰上的沒有看特別懂

所以從網上搜索了下 感覺能看懂

輾轉相除法的證明   設兩數為a、b(b<a),求它們最大公約數的步驟如下:用b除a,得a=bq+r(0≤r<b)(q是這個除法的商)。   若r=0,則b是a和b的最大公約數。   若r≠0,則繼續考慮。 首先,應該明白的一點是任何 a 和 b 的公約數都是 r 的公約數。要想證明這一點,就要考慮把 r 寫成 r=a-bq。現在,如果 a 和 b 有一個公約數 d,而且設 a=sd , b=td, 那麽 r = sd-tdq = (s-tq)d。因為這個式子中,所有的數(包括 s-tq )都為整數,所以 r 可以被 d 整除。   對於所有的 d 的值,這都是正確的;所以 a 和 b 的最大公約數也是 b 和 r 的最大公約數。因此我們可以繼續對 b 和 r 進行上述取余的運算。這個過程在有限的重復後,可以最終得到 r=0 的結果,我們也就得到了 a 和 b 的最大公約數。   c++實現
1
int gcd(int a,int b){ 2 if(b == 0) return a; 3 return gcd(b, a % b); 4 }

  

[轉]輾轉相除法 的 證明