歐幾里得算法(又稱輾轉相除法)用於計算兩個數的最大公約數
因式分解
在學習歐幾里得算法之前,我們先來看一看數字1112和695的最大公約數是多少吧。
通常的做法是先對兩個數字因式分解,找出共同的素數,然后求出最大公約數(GCD)。這樣就能求出1112和695的最大公約數為139。然而兩個數字越大,因式分解就越難。此時,使用歐幾里得算法就能更高效地求解最大公約數。
處理流程
首先用較小的數字去除較大的數字,求出余數。也就是對兩個數字進行mod運算。我們在第5章也講過mod運算即取余運算,A mod B就是算出A除以B后的余數C。
除完后的余數為417。
接下來再用除數695和余數417進行mod運算。結果為278。
繼續重復同樣的操作,對417和278進行mod運算,結果為139。
對278和139進行mod運算,結果為0。也就是說,278可以被139整除。
余數為0時,最后一次運算中的除數139就是1112和695的最大公約數。
算法效率
使用歐幾里得算法,只需重復做除法便能求得最大公約數。這個算法最大的優勢就在於即使兩個數字再大,只要按照步驟進行操作就能高效地求得兩者的最大公約數。
參考: 我的第一本算法書 7-1 歐幾里得算法