C++ 于龙被一个问题给难住了,现在需要你帮帮忙。问题是:给出两个正整数,求出它们的最大公约数和最小公倍数。
时间: 2024-09-08 14:03:40 浏览: 64
在C++中,可以通过辗转相除法(也称欧几里得算法)来计算两个正整数的最大公约数(Greatest Common Divisor, GCD),然后根据最大公约数和原来的两个数计算最小公倍数(Least Common Multiple, LCM)。以下是一个使用C++实现的示例代码:
```cpp
#include <iostream>
// 函数声明
int gcd(int a, int b);
int lcm(int a, int b, int gcd);
int main() {
int num1, num2;
std::cout << "请输入两个正整数:" << std::endl;
std::cin >> num1 >> num2;
int gcdResult = gcd(num1, num2); // 计算最大公约数
int lcmResult = lcm(num1, num2, gcdResult); // 计算最小公倍数
std::cout << "最大公约数是:" << gcdResult << std::endl;
std::cout << "最小公倍数是:" << lcmResult << std::endl;
return 0;
}
// 辗转相除法计算最大公约数
int gcd(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
// 利用最大公约数计算最小公倍数
int lcm(int a, int b, int gcd) {
return (a / gcd) * b; // 先除后乘防止溢出
}
```
使用这个程序,用户可以输入两个正整数,然后程序会输出它们的最大公约数和最小公倍数。
阅读全文