利用cpp求两个或三个整数的最大公约数
时间: 2024-09-30 09:08:00 浏览: 31
在C++中,求两个或三个整数的最大公约数(Greatest Common Divisor,GCD)可以使用欧几里得算法,也称为辗转相除法。下面是使用这种方法的一个简单实现:
```cpp
#include <iostream>
// 使用递归计算最大公约数
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
// 如果有三个整数,先计算前两个的最大公约数,然后再与第三个数求最大公约数
int gcd_three(int a, int b, int c) {
int temp = gcd(a, b);
return gcd(temp, c);
}
int main() {
int num1, num2, num3 = 0; // 可以选择输入三个整数
std::cout << "请输入第一个数字: ";
std::cin >> num1;
std::cout << "请输入第二个数字: ";
std::cin >> num2;
// 如果需要输入第三个数
if (std::cin.peek() != EOF) { // 验证是否还有下一个输入
std::cin.ignore(); // 清理输入缓冲区
std::cout << "请输入第三个数字: ";
std::cin >> num3;
int result = gcd_three(num1, num2, num3);
std::cout << "三个数的最大公约数是: " << result << std::endl;
} else {
int result = gcd(num1, num2);
std::cout << "两个数的最大公约数是: " << result << std::endl;
}
return 0;
}
```
在这个代码片段中,`gcd`函数用于计算两个数的最大公约数,如果需要求三个数的最大公约数,则调用`gcd_three`函数。用户会提示输入两个或三个整数,然后程序会计算并输出结果。
阅读全文