c++输入两个正整数,求其中最大公约数和最小公倍数。
时间: 2025-03-30 13:06:52 浏览: 111
在C++中,我们可以通过编写函数来计算两个正整数的最大公约数 (GCD) 和最小公倍数 (LCM)。通常可以利用欧几里得算法(辗转相除法)来高效地找到最大公约数。
### 实现步骤:
1. **最大公约数**:通过递归或循环的方式应用“辗转相除法”。
2. **最小公倍数**:公式为 `LCM(a, b) = a * b / GCD(a, b)` (注意防止溢出)。
以下是示例代码:
```cpp
#include <iostream>
using namespace std;
// 求最大公约数 - 使用辗转相除法
int gcd(int a, int b) {
while(b != 0){
int temp = a % b;
a = b;
b = temp;
}
return a;
}
// 求最小公倍数
int lcm(int a, int b) {
return a * b / gcd(a, b);
}
int main() {
int num1, num2;
cout << "请输入两个正整数:" << endl;
cin >> num1 >> num2;
if(num1 <= 0 || num2 <= 0){
cout << "输入错误!请输入正整数" << endl;
return 1; // 返回非零值表示程序异常结束
}
cout << "最大公约数:" << gcd(num1, num2) << endl;
cout << "最小公倍数:" << lcm(num1, num2) << endl;
return 0;
}
```
#### 解释:
1. 函数`gcd()`实现了求取两数的最大公约数的功能;
2. 函数`lcm()`基于最大公约数的结果进一步得到最小公倍数;
3. 主函数部分接收用户输入,并对输入数据进行简单校验。
阅读全文
相关推荐
















