网络资源的拷贝粘贴 备份参考之用


30 January 2011

求最大公约数(欧几里德算法)

求最大公约数的欧几里德算法,也称作辗转相除法,如下:

int GetGCD(int m, int n)
{
if (n = 0)
{
return m;
}
return GetGCD(n, m % n);
}
(GCD = Greatest Common Divisor)

比如
GetGCD(18, 24)
-> GetGCD(24, 18)
-> GetGCD(18, 6);
-> GetGCD(6, 0);
-> return 6;

----------------------------------------

另外,最小公倍数 = 两数之积 / 最大公约数
所以 GetLCM(m, n) = m * n / GetGCD(m, n)
(LCM = Least Common Multiple)

比如
GetLCM(18, 24) = 18 * 24 / 6 = 72

No comments:

Google