c++编程序求两个数的最大公约数和最小公倍数
时间: 2024-10-20 08:13:46 浏览: 31
最大公约数 最小公倍数 C++
在C++编程中,求两个整数的最大公约数(Greatest Common Divisor,GCD)和最小公倍数(Least Common Multiple,LCM),通常可以利用辗转相除法(欧几里得算法)来计算最大公约数,然后根据公式 `GCD(a, b) * LCM(a, b) = a * b` 来间接得到最小公倍数。以下是基本步骤:
1. **计算最大公约数(GCD)**:
- 使用欧几里得算法:对于给定的两个数a和b(假设a >= b),不断取余数,直到余数为0。此时,除数就是最大公约数。如果a % b == 0,则直接返回b;否则,递归地计算(b, a % b)。
```cpp
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
```
2. **计算最小公倍数(LCM)**:
- 根据上面提到的公式,最小公倍数等于两数之积除以它们的最大公约数。
```cpp
int lcm(int a, int b) {
return (a * b) / gcd(a, b);
}
```
你可以将这两个函数组合起来,对任意两个整数求解最大公约数和最小公倍数。例如:
```cpp
int main() {
int num1 = 48, num2 = 18;
int gcdResult = gcd(num1, num2);
int lcmResult = lcm(num1, num2);
cout << "GCD of " << num1 << " and " << num2 << " is: " << gcdResult << endl;
cout << "LCM of " << num1 << " and " << num2 << " is: " << lcmResult << endl;
return 0;
}
```
运行上述代码会输出对应的结果。
阅读全文