歐幾里得算法又稱輾轉相除法,用於計算兩個正整數a,b的最大公約數。 其計算原理依賴於下面的定理: 定理: 兩個整數的最大公約數等於其中較小的那個數和兩數的相除餘數的最大公約數。最大公約數(greatest common divisor)縮寫爲gcd。 gcd(a,b) = gcd(b,a mod b) (不妨設a>b 且r=a mod b ,r不爲0)
證明: a可以表示成a = kb + r(a,b,k,r皆爲正整數),則r = a mod b 假設d是a,b的一個公約數,記作d|a,d|b,即a和b都可以被d整除。 而r = a – kb,兩邊同時除以d,r/d=a/d-kb/d=m,等式左邊可知m爲整數,因此d|r 因此d也是(b,a mod b)的公約數 因此(a,b)和(b,a mod b)的公約數是一樣的,其最大公約數也必然相等,得證。
下面我說下自己的想法: 假設m是a,b的最大公約數,那麼a = im,b = jm,a和b都是m的整數倍,那麼我們要求m,其實就是求得a,b的係數i mod j最後逼近1的情況,無論是上面的輾轉相除法,還是幾何原本中歐幾里得的輾轉相減法,道理都是一樣,最後都能得到係數爲1的時候,即得到我們想要的m。