C++での二つの数値の最大公約数の求め方


C++には、標準ライブラリである <numeric> ヘッダに std::gcd という関数が用意されています。この関数を使用すると、簡単に最大公約数を求めることができます。以下に、std::gcd 関数を使用した最大公約数の求め方の例を示します。

#include <iostream>
#include <numeric>
int main() {
    int num1 = 24;
    int num2 = 36;
    int gcd = std::gcd(num1, num2);
    std::cout << "最大公約数: " << gcd << std::endl;
    return 0;
}

上記のコードでは、num1num2 の最大公約数を求めています。std::gcd 関数は、C++17以降で利用可能です。

もし、C++17以前のバージョンを使用している場合や、標準ライブラリを使用したくない場合は、自前で最大公約数を求める関数を実装することもできます。以下に、ユークリッドの互除法を用いた最大公約数の求め方の例を示します。

#include <iostream>
int gcd(int a, int b) {
    if (b == 0) {
        return a;
    }
    return gcd(b, a % b);
}
int main() {
    int num1 = 24;
    int num2 = 36;
    int gcd_result = gcd(num1, num2);
    std::cout << "最大公約数: " << gcd_result << std::endl;
    return 0;
}

上記のコードでは、gcd 関数を定義し、ユークリッドの互除法を使って最大公約数を求めています。

これらの方法を使用すると、C++で二つの数値の最大公約数を求めることができます。自分のプログラムに適した方法を選択し、必要に応じてコードをカスタマイズしてください。