C++设计最大公约数和最小公倍数
时间: 2024-10-18 13:19:35 浏览: 18
C++ 实现求最大公约数和最小公倍数
5星 · 资源好评率100%
在C++中,我们可以使用欧几里得算法(Euclidean algorithm)来计算两个整数的最大公约数(Greatest Common Divisor, GCD),这种方法基于一个基本定理:对于任意两个正整数a和b,它们的最大公约数等于a除以b余数r和b之间的最大公约数。
以下是C++实现最大公约数的基本步骤:
```cpp
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
```
最小公倍数(Least Common Multiple, LCM)可以通过下面的公式求得:`LCM(a, b) = |a * b| / GCD(a, b)`,因为两个数的乘积等于它们的最大公约数和最小公倍数的乘积。
下面是一个完整的函数,用于同时计算并返回最大公约数和最小公倍数:
```cpp
#include <cmath>
pair<int, int> lcm_gcd(int a, int b) {
int gcd_val = gcd(a, b);
int lcm_val = abs(a * b) / gcd_val; // 使用绝对值防止结果为负
return make_pair(gcd_val, lcm_val);
}
// 已经有gcd函数,这里直接调用
pair<int, int> compute_lcm_and_gcd(int a, int b) {
return lcm_gcd(a, b);
}
阅读全文