c++求最大公约数和最小
时间: 2024-09-23 07:17:01 浏览: 43
在 C++ 中,可以使用欧几里得算法(Euclidean algorithm)来求两个整数的最大公约数(Greatest Common Divisor, GCD)。这个算法的基本思想是不断用较小的数去除较大的数,然后用除数替换较大数,直到两数相等,此时的除数就是它们的最大公约数。
以下是使用递归版本的欧几里得算法实现 GCD 的 C++ 代码示例:
```cpp
#include <iostream>
// 函数声明
int gcd(int a, int b);
// 求最大公约数的主函数
int main() {
int num1, num2;
std::cout << "请输入两个整数: ";
std::cin >> num1 >> num2;
int result = gcd(num1, num2);
std::cout << "最大公约数是: " << result << std::endl;
return 0;
}
// 欧几里得算法的递归实现
int gcd(int a, int b) {
if (b == 0)
return a; // 如果 b 为零,则 a 即为最大公约数
else
return gcd(b, a % b); // 否则,递归地对 b 和 a%b 进行计算
}
```
至于最小公倍数(Least Common Multiple, LCM),你可以通过下面的公式计算,它等于两数之积除以他们的最大公约数:
```cpp
int lcm(int a, int b) {
return (a * b) / gcd(a, b);
}
```
如果你需要使用这两个函数,记得先引入 `<cmath>` 库,因为 `%` 运算符和 `gcd` 函数都属于 `<cmath>`。
阅读全文