写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。 输入 两个数 输出 最大公约数 最小公倍数 样例输入 6 15 样例输出 3 30
时间: 2025-04-08 08:29:27 浏览: 32
### 计算最大公约数和最小公倍数的实现
#### 使用C++实现
在C++中,`<numeric>`头文件提供了内置函数 `gcd()` 和 `lcm()` 来分别计算两个整数的最大公约数和最小公倍数。以下是基于这些函数的一个简单示例:
```cpp
#include <iostream>
#include <numeric> // 提供 gcd 和 lcm 函数
int main() {
int a, b;
std::cout << "请输入两个整数:" << std::endl;
std::cin >> a >> b;
if (a != 0 && b != 0) { // 防止输入零的情况
int greatest_common_divisor = std::gcd(a, b); // 调用标准库中的 gcd()
int least_common_multiple = std::lcm(a, b); // 调用标准库中的 lcm()
std::cout << "最大公约数: " << greatest_common_divisor << std::endl;
std::cout << "最小公倍数: " << least_common_multiple << std::endl;
} else {
std::cout << "无法计算包含零的结果!" << std::endl;
}
return 0;
}
```
如果不想依赖 `<numeric>` 中的功能,则可以通过欧几里得算法手动实现这两个功能。
```cpp
// 手动实现 GCD 的函数
int compute_gcd(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
// 基于 GCD 实现 LCM 的函数
int compute_lcm(int a, int b) {
if (a == 0 || b == 0)
return 0;
return abs((a / compute_gcd(a, b)) * b);
}
int main() {
int a, b;
std::cout << "请输入两个整数:" << std::endl;
std::cin >> a >> b;
int greatest_common_divisor = compute_gcd(a, b);
int least_common_multiple = compute_lcm(a, b);
std::cout << "最大公约数: " << greatest_common_divisor << std::endl;
std::cout << "最小公倍数: " << least_common_multiple << std::endl;
return 0;
}
```
以上代码展示了如何不借助标准库来完成相同的目标[^1]。
#### 使用Python实现
Python同样支持直接调用内置模块 `math.gcd()` 来获取两数的最大公约数,并可通过公式推导得到最小公倍数。下面是一个完整的例子:
```python
import math
def find_lcm(x, y):
"""根据GCD计算LCM"""
return abs(x * y) // math.gcd(x, y)
if __name__ == "__main__":
try:
num1 = int(input("请输入第一个整数:"))
num2 = int(input("请输入第二个整数:"))
gcd_result = math.gcd(num1, num2)
lcm_result = find_lcm(num1, num2)
print(f"最大公约数(GCD): {gcd_result}")
print(f"最小公倍数(LCM): {lcm_result}")
except ValueError as e:
print("错误:请输入有效的整数值!")
```
对于更复杂的场景比如三个数的最小公倍数,可以扩展上述方法。例如先求前两者再依次加入第三个数进行运算[^3][^4]。
```python
def three_numbers_lcm(a, b, c):
"""计算三个数的最小公倍数"""
first_two = find_lcm(a, b)
all_three = find_lcm(first_two, c)
return all_three
# 测试部分省略...
```
综上所述,无论是采用高级语言自带工具还是自定义逻辑处理,都可以高效达成目标并满足实际应用需求[^5]。
---
阅读全文