C++最大公因數

在C++中,你可以使用多種算法來找出兩個或多個整數之間的最大公因數(Greatest Common Divisor, GCD)。以下是幾種常見的方法:

  1. 暴力搜尋法(Brute Force Method):

    • 遍歷較小整數的每個因子,檢查它是否也是較大整數的因子。
    • 一旦找到一個公共因子,就繼續檢查下一個因子,直到找到最大公因數。
  2. 歐幾里得算法(Euclidean Algorithm):

    • 這是一種高效的方法,用於計算兩個整數的最大公因數。
    • 它基於這樣一個事實:兩個整數的最大公因數等於較小整數和兩個整數的差的最大公因數。
    • 你可以通過遞歸或疊代來實現這個算法。
  3. 輾轉相除法(Division Algorithm):

    • 這是一種簡單的算法,用於找到兩個整數的最大公因數。
    • 它通過不斷將較大的數除以較小的數,直到得到商為1來工作。
    • 此時的餘數即為兩個數的最大公因數。

以下是一個使用歐幾里得算法的C++示例:

#include <iostream>

int gcd(int a, int b) {
    if (b == 0) {
        return a;
    }
    return gcd(b, a % b);
}

int main() {
    int a, b;
    std::cin >> a >> b;
    std::cout << "The GCD of " << a << " and " << b << " is " << gcd(a, b) << std::endl;
    return 0;
}

在這個例子中,gcd 函式遞歸地調用自己,直到 b 為 0,此時返回 a 作為最大公因數。

如果你需要計算多個整數的最大公因數,你可以使用同樣的算法,每次將結果與下一個整數計算最大公因數。