高效的最大公約數演算法

2021-06-10 05:38:21 字數 610 閱讀 4891

最大公約數的演算法一般就是輾轉相除法了。直觀易懂。但是取模運算卻是很耗時的。

看**:

package a;

public class copyoftest1

// 求ab的最大公約:輾轉相除法

public static int fun1(int a, int b)

// 求ab的最大公約數

public static int fun(int a, int b)

if (b == 0)

if (iseven(a)) else

} else else

} }public static boolean iseven(int a)

return false;

}}

看了程式設計之美上的演算法。根據最大公約數的特點,

f(x,y)=f(kx,ky)=kf(x,y)

f(x,y)=f(px1,y)=f(x1,y):y不能被p整除

f(x,y)=f(x,py1)=f(x,y1):x不能被p整除

f(x,y)=f(y,x-y):這個公式對任何的xy都適用

於是有了上面的fun演算法。

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

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 並且...

演算法 最大公約數

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