最大公约数(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) (处理分数时,可以使用这个公式)
相关文章推荐
- 数论(1):最大公约数和最小公倍数(Gcd&Lcm)
- C++/C经典算法百题--(39-42)年龄几何,三色球问题,两个正整数的最大公约数和(GCD)和最小公倍数(LCM)
- 最小公倍数(LCM)和最大公约数(GCD)
- gcd,最大公约数,lcm,最小公倍数
- GCD -- 最大公约数 LCM -- 最小公倍数
- HDOJ2503 ( a/b + c/d ) 【最大公约数GCD,最小公倍数LCM】
- java-求任意两个正整数的最大公约数和(GCD)和最小公倍数(LCM)
- 求任意两个正整数的最大公约数和(GCD)和最小公倍数(LCM)
- 最大公约数与最小公倍数(gcd,lcm)
- 最大公约数GCD和最小公约数LCM
- 最大公约数gcd与最小公倍数lcm
- Leetcode ☞ 263. Ugly Number ☆ 【附求质数 prime number 最大公约gcd 最小公倍lcm】
- HDU-1019-Least Common Multiple( 最大公约数 && 最小公倍数 && GCD )
- ACM数论之旅3---最大公约数gcd和最小公倍数lcm(苦海无边,回头是岸( ̄∀ ̄))
- 数论继续学习3--最大公约数gcd和最小公倍数lcm
- 最大公约数和最小公倍数(gcd)
- 对于求解最大公约数GCD与最小公倍数LCM的算法
- 最大公约数和最小公倍数
- 常见算法:C语言求最小公倍数和最大公约数三种算法
- 求两个正整数的 最大公约数和最小公倍数