最大公約數的演算法一般就是輾轉相除法了。直觀易懂。但是取模運算卻是很耗時的。
看**:
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 並且...