演算法 最大公約數

2021-09-06 23:29:01 字數 519 閱讀 8476

最大公約數是乙個很經典的數學問題,對於這個問題有四種通用的解法,質因數分解法,短除法,不過比較常用的還是輾轉相除法,演算法出自於歐幾裡的著作《幾何原本》,還有乙個就是出自《九章算術》的更相減損法,一般實現的時候都是通過輾轉相除法實現,基本的邏輯是這樣的:假設把a和b的最大公約數表示成為f(a,b),並且a>=b>0。現在取k=a/b,m=a%b,則a=k*b+m,變形為m=a - k*b;x和y能被f(a,b)整除,那麼m也能被f(a,b)整除,f(a,b) = f(b,a%b)。

基於上面的邏輯我們定義兩個數字a,b,首先mod=a%b餘數,然後將b賦值給a,mod賦值給b,跳出迴圈返回a就是最大公約數,**如下:

-(nsinteger)maxdivisor:(nsinteger)a secondnumber:(nsinteger)belse

}elseelse}}

return 0;

}

通過移位運算和減法運算,避開了大整數除法,提高了演算法的效率,有些東西還是需要經常研究的~

最大公約數簡便演算法 最大公約數演算法

1 查詢約數法 先分別找出每個數的所有約數,再從兩個數的約數中找出公有的約數,其中最大的乙個就是 最大公約數 例如,求 12 和 30 的最大公約數 12 的約數有 1 2 3 4 6 12 30 的約數有 1 2 3 5 6 10 15 30 12 和 30 的公約數有 1 2 3 6,其中 6 ...

演算法 最大公約數

最大公約數是乙個很經典的數學問題,對於這個問題有四種通用的解法,質因數分解法,短除法,不過比較常用的還是輾轉相除法,演算法出自於歐幾裡的著作 幾何原本 還有乙個就是出自 九章算術 的更相減損法,一般實現的時候都是通過輾轉相除法實現,基本的邏輯是這樣的 假設把a和b的最大公約數表示成為f a,b 並且...

最大公約數演算法

1 查詢約數法 先分別找出每個數的所有約數,再從兩個數的約數中找出公有的約數,其中最大的乙個就是 最大公約數 例如,求 12 和 30 的最大公約數 12 的約數有 1 2 3 4 6 12 30 的約數有 1 2 3 5 6 10 15 30 12 和 30 的公約數有 1 2 3 6,其中 6 ...