您的位置:首页 > 其它

最大公约数(GCD)和最小公倍数(LCM)

2017-08-03 23:18 274 查看

GCD()和LCM()的关系:

GCD(a,b):就是求a,b的最大公约数。

LCM(a,b):就是求a,b的最小公倍数。

之后有一个公式:

a*b=GCD(a,b)*LCM(a,b)。

一般求GCD(a,b),用辗转相除法,代码很简洁。

int GCD(int x,int y){
if(!y) return x;
GCD(y,x%y);
}

int GCD(int a,int b){
return (b==0)?a:GCD(b,a%b);
}
//两种写法都行。


所以:LCM(a,b)=a*b/GCD(a,b)

(注意,这样写法有可能会错,因为a * b可能因为太大 超出int 或者 超出 longlong)

所以推荐写成 : lcm = a / gcd * b

相关公式:

GCD(ka, kb) = k * GCD(a, b)

LCM(ka, kb) = k * LCM(a, b)

LCM(S/a, S/b) = S/GCD(a, b) (处理分数时,可以使用这个公式)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  gcd lcm 数论 算法