一.概述
最大公约数(GCD)和最小公倍数(Least Common Multiple,LCM)
在C++中,可以使用 std::__gcd(a, b)来计算最大公约数

1.欧几里德算法/辗转相除法
int gcd(int a,int b){
return b?gcd(b, a%b):a;
}
2.lcm
int lcm(int a,int b){
return a/gcd(a, b)*b;
}
3.gcd的性质
- gcd(a, b) = gcd(a, a+b) = gcd(a, k·a+b)
- gcd(ka, kb) = k·gcd(a, b)
- 多个整数的最大公约数:gcd(a, b, c) = gcd(gcd(a, b), c)。
- 若gcd(a, b) = d,则gcd(a/d, b/d) = 1,即a/d与b/d互素。这个定理很重要。
- gcd(a+cb, b) = gcd(a, b)
- 裴蜀定理:如果两个整数的最大公约数是d, 那么方程ax+by=d一定有解。 <


9688

被折叠的 条评论
为什么被折叠?



