使用C++程序,编写函数求两个整数的最大公约数和最小公倍数(尝试运用类与对象的知识进行解答)
时间: 2024-10-20 09:06:17 浏览: 23
C++ 实现求最大公约数和最小公倍数
5星 · 资源好评率100%
在C++中,我们可以创建一个类来封装计算最大公约数(GCD)和最小公倍数(LCM)的功能。首先,我们需要知道这两个数之间的关系:gcd(a, b) * lcm(a, b) = a * b(对于任意非零整数a和b)。以下是使用类和对象的方式实现:
```cpp
#include <iostream>
// 定义一个名为MathHelper的类,包含GCD和LCM成员函数
class MathHelper {
public:
// 计算最大公约数,采用欧几里得算法
int gcd(int a, int b) {
if (b == 0)
return a;
return gcd(b, a % b);
}
// 计算最小公倍数,利用公式 lcm(a, b) = |a * b| / gcd(a, b)
int lcm(int a, int b) {
return abs(a * b) / gcd(a, b); // 注意取绝对值避免负数影响结果
}
};
int main() {
MathHelper helper; // 创建MathHelper类的对象
int num1, num2;
std::cout << "请输入两个整数:";
std::cin >> num1 >> num2;
// 调用对象的方法
int result_gcd = helper.gcd(num1, num2);
int result_lcm = helper.lcm(num1, num2);
std::cout << "最大公约数(GCD)是:" << result_gcd << "\n";
std::cout << "最小公倍数(LCM)是:" << result_lcm << "\n";
return 0;
}
```
在这个例子中,我们创建了一个`MathHelper`类,其中包含了计算GCD和LCM的方法。在`main()`函数中,通过创建`MathHelper`对象并调用其成员方法,可以方便地求出给定两个整数的最大公约数和最小公倍数。
阅读全文