12 和 18 的最大公約數是多少?
最大公約數:最大公約數,也稱最大公因數、最大公因子,指兩個或多個整數共有約數中最大的乙個。例如:18 與 12 的最大公約數為 6 。短除法
短除法是求最大公因數的一種方法:先把每個數的因數找出來,然後再找出公因數,最後在公因數中找出最大公因數。
因式分解法
在初中數學題中,基本上我們就是採取因式分解或者短除法的形式來求最大公約數。
但是它們存在的問題是:當公共素因子較小時,通過觀察可以很快找出;但是當公因子較大時,僅僅通過觀察已經很難找出甚至在一定時間內找不出。
比如求 22008 和 655 的最大公約數時,很難直接找到其公因子。
那麼有沒有更好的方法來求解最大公約數呢?答案是有的,就是接下來要介紹的歐幾里得演算法。
歐幾里得演算法(英語:euclidean algorithm),又稱輾轉相除法,是求最大公約數的演算法。
輾轉相除法基於如下原理:兩個整數的最大公約數等於其中較小的數和兩數的差的最大公約數。
輾轉相除法首次出現於歐幾里得的《幾何原本》(第vii卷,命題i和ii)中,而在中國則可以追溯至東漢出現的《九章算術》。
輾轉相除法基於如下原理:兩個整數的最大公約數等於其中較小的數和兩數的差的最大公約數。例如,252 和 105 的最大公約數是 21;因為 252 − 105 = 21 × (12 − 5) = 147 ,所以 147 和 105 的最大公約數也是 21。
在這個過程中,較大的數縮小了,所以繼續進行同樣的計算可以不斷縮小這兩個數直至其中乙個變成零。
這時,所剩下的還沒有變成零的數就是兩數的最大公約數。
將上面的較大的數縮小的過程中往往使用的是 mod 操作。
mod,是乙個數學運算符號-----求餘運算子。
例如a mod b = c
,表明 a 除以 b 餘數為 c 。 在整數的除法中,只有能整除與不能整除兩種情況,所以當不能整除時,就會產生餘數。
我們借助於 mod 使用輾轉相除法的概念來求數字1112和數字695的最大公約數。
當餘數變為 0 的時候,最後乙個操作的除數是最大公約數,即139是數字1112和數字695的最大公約數。
設計**於演算法動畫講解
一般演算法流程如下:
通過動畫來理解一下為什麼使用輾轉相除法可以找到最大公約數。
將最大的公約數設定為 n,當然雖然一開始對於每個整數是不知道可以分段成多少個 n 的,但是,可以知道 1112 和 695 都是最大公約數 n 的倍數。
通過 mod 操作,不停的找餘數。
最後兩個數是倍數關係,可以整除,餘數為 0 ,結束了操作。
此時剩下的一條線段的長度就是 1112 和 695 的最大公因數。
end
推薦閱讀:
來和程式設計師小吳一起學演算法
我就知道你在看!
歐幾里得演算法
歐幾里得演算法中,計算 x,y 的最大公約數的方法是輾轉相除,例如 26,15 26 15 1 11 15 11 1 4 11 4 2 3 4 3 1 1 3 1 3 0 可知,26,15 1 如果 x,y r,那麼有 ax by r,可以看出,上面的步驟實際上是可以直接得出 a,b 的 26 15...
歐幾里得演算法
輾轉相除法,又被稱為歐幾里德 euclidean 演算法,是求最大公約數的演算法。當然也可以求最小公倍數。以除數和餘數反覆做除法運算,當餘數為 0 時,取當前算式除數為最大公約數。可以使用遞迴實現,也可以使用迴圈實現。program algorithm code description 歐幾里得演算...
歐幾里得演算法
在 幾何原本 中,歐幾里得提出了用輾轉相除的方法求解兩個整數 a,b 的最大公約數的演算法 gcd a,b if 0 b return a else return gcd b,a mod b 定理 若整數 a,b 的最大公約數為 gcd a,b 那麼 gcd a,b gcd b,a mod b 證明...