辗转相除法求最大公倍数c++
时间: 2025-01-02 12:18:40 浏览: 19
### 使用 C++ 实现辗转相除法计算最小公倍数
为了通过辗转相除法(也称为欧几里得算法)来求解两个整数的最大公约数并进一步得到它们的最小公倍数,在C++中的实现方式如下:
#### 定义函数用于求取最大公约数
定义一个名为`gcd`的函数,该函数接收两个参数作为待比较的正整数值,并返回这两个值之间的最大公约数。此过程利用了递归调用来不断缩小问题规模直到找到最终的结果。
```cpp
int gcd(int m, int n) {
if (n == 0)
return m;
else
return gcd(n, m % n);
}
```
上述代码片段展示了如何采用递归形式编写最大公约数查找器[^2]。
#### 计算最小公倍数的方法
一旦获得了给定一对数字的最大公约数之后,则可以通过简单的乘法规则得出其对应的最小公倍数:即两数之积再除以其最大公约数即可获得结果。这里提供了一个辅助性的`lcm`函数来进行这项工作。
```cpp
int lcm(int m, int n){
return abs(m * n) / gcd(m, n); // 需要注意的是当处理负数情况时应考虑绝对值运算
}
```
这段程序说明了怎样基于之前提到过的最大公约数去构建一个新的表达式从而获取到所期望的小于等于任意指定范围内的所有自然数中能够被原始输入数据同时整除的那个最大的那个数。
#### 主函数部分
最后一步是在主函数内读入用户提供的成对整型变量并通过前面创建好的工具完成相应的逻辑操作后打印输出答案。
```cpp
#include <iostream>
using namespace std;
// ... 上述已给出的 gcd 和 lcm 函数 ...
int main(){
int num1, num2;
cout << "请输入两个正整数:" ;
cin >> num1 >> num2 ;
cout << "\n最大公约数为:" << gcd(num1 ,num2 )<< endl;
cout << "最小公倍数为:" << lcm(num1 ,num2)<< endl;
return 0;
}
```
以上就是完整的源码列表,它实现了使用辗转相除法寻找两个特定整数间的关系——既包括两者间的最大公约数又涵盖了最小公倍数的概念。
阅读全文