最大公因數c++

在C++中,你可以使用標準庫中的 std::gcd 函數來計算兩個整數的最大公因數(Greatest Common Divisor, GCD)。這個函數在 <numeric> 標頭中定義,它是通過 std::numeric_limits<> 類模板提供的。

以下是一個簡單的例子,展示了如何使用 std::gcd 來找出兩個數的最大公因數:

#include <iostream>
#include <numeric> // 包含 std::gcd

int main() {
    int a = 40;
    int b = 50;

    // 使用 std::gcd 計算 GCD
    int gcd = std::gcd(a, b);

    // 輸出結果
    std::cout << "The GCD of " << a << " and " << b << " is " << gcd << std::endl;

    return 0;
}

如果你想要使用更基本的方法來計算最大公因數,你可以使用埃拉托斯特尼質數篩(Eratosthenes' sieve)算法,這個算法可以通過檢查每個數字是否為另一個數字的因數來找出最大公因數。以下是一個使用埃拉托斯特尼質數篩的例子:

#include <iostream>
#include <vector>

int gcd(int a, int b) {
    // 如果 b == 0, 則 a 是最大公因數
    if (b == 0) return a;
    // 使用埃拉托斯特尼質數篩來找出 GCD
    return gcd(b, a % b);
}

int main() {
    int a = 40;
    int b = 50;

    // 使用自定義函式 gcd 計算 GCD
    int gcd = gcd(a, b);

    // 輸出結果
    std::cout << "The GCD of " << a << " and " << b << " is " << gcd << std::endl;

    return 0;
}

這個算法會重複將較小的數字(b)與較大的數字(a)的餘數進行比較,直到餘數為0為止。當餘數為0時,較小的數字就是最大公因數。