📜  c++ 程序查找 3 个数字的 gcd - C++ (1)

📅  最后修改于: 2023-12-03 14:59:49.448000             🧑  作者: Mango

C++ 程序查找三个数字的 GCD

GCD(最大公约数)是三个数字中最大的能整除三个数字的正整数。在 C++ 中,我们可以通过递归的方式来实现三个数字的 GCD 计算。

以下是一个能计算三个数字的 GCD 的 C++ 程序:

#include <iostream>
using namespace std;

int gcd(int a, int b, int c);

int main() {
    int a, b, c;
    cout << "Enter three numbers: ";
    cin >> a >> b >> c;
    cout << "GCD of " << a << ", " << b << " and " << c << " is: " << gcd(a, b, c);
    return 0;
}

int gcd(int a, int b, int c) {
    if (a == 0) {
        return b > c ? gcd(b - c, c, 0) : gcd(c - b, b, 0);
    }
    if (a > b && a > c) {
        return gcd(a - b, b, c);
    } else if (b > a && b > c) {
        return gcd(b - a, a, c);
    } else {
        return gcd(c - a, a, b);
    }
}
代码解释

代码中的 gcd 函数采用了递归的方法来进行 GCD 的计算。函数有三个参数 abc,这三个参数分别代表需要计算的三个数字。

在递归的过程中,我们首先检查 a 是否为 0。如果为 0,则说明 bc 中必有一个是 GCD。因此我们可以通过递归再次调用 gcd 函数,并将参数值赋为:

  • gcd(b-c, c, 0) 或者
  • gcd(c-b, b, 0)

如果 a 不为 0,则我们需要根据三个数字的大小来选择递归的下一步计算。我们使用 if-else 语句来检查三个数字之间的关系,并采取不同的计算方案直到找到 GCD。

最后,我们在 main 函数中调用该函数并输出结果。

总结

三个数字的 GCD 的计算方法可以通过递归来实现。在 C++ 中,我们可以采用 if-else 语句来判断三个数字的大小,并根据不同的情况采取不同的计算方案实现递归计算。