C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++で2つの数の最大公約数(GCD・HCF)を求めるプログラム

このチュートリアルでは、C++を使って2つの数の最大公約数(GCD:Greatest Common Divisor、HCF:Highest Common Factor)を求めるプログラムについて解説します。

ここでは、2つの整数が与えられたときに、その両方を割り切れる最大の数(最大公約数)を計算することを目標とします。

プログラム例

#include <iostream>
using namespace std;
int gcd(int a, int b){
    if (a == 0)
        return b;
    if (b == 0)
        return a;
    if (a == b)
        return a;
    if (a > b)
        return gcd(a-b, b);
    return gcd(a, b-a);
}
int main(){
    int a = 98, b = 56;
    cout<<"GCD of "<<a<<" and "<<b<<" is "<<gcd(a, b);
    return 0;
}

出力

GCD of 98 and 56 is 14

アルゴリズムの解説

このプログラムは、減算を繰り返す方式のユークリッドの互除法を再帰的に実装したものです。処理の流れは以下の通りです。

  • 一方の値が0になった場合、もう一方の値がそのまま最大公約数となるため、その値を返します。
  • 両方の値が等しい場合、その値自体が最大公約数です。
  • aがbより大きい場合は「a − b」を、そうでない場合は「b − a」を計算し、gcd関数を再帰的に呼び出して処理を続けます。

この例では、98と56の最大公約数は14であるため、「GCD of 98 and 56 is 14」という結果が出力されます。なお、この手法はシンプルで理解しやすい反面、数値が大きい場合には剰余演算(%)を使う標準的なユークリッドの互除法の方が効率的です。

  1. C++で2つの数値を加算するプログラムの書き方【サンプルコード付き】

    加算(足し算)は、最も基本的な算術演算の一つです。2つの数値を加算するプログラムは、指定された2つの数値の合計を計算し、その結果を画面に表示します。この記事では、C++で2つの数値を加算する方法を、変数を使った基本例と配列を使った応用例の2パターンに分けて解説します。例1:変数を使って2つの数値を加算するまずは、最もシンプルな方法です。2つの整数型変数を用意し、その合計を別の変数に格納して出力します。#include <iostream> using namespace std; int main() { int num1 = 15, num2 = 10, sum;

  2. 【Java】2つの数値の最大公約数(GCD)を求めるプログラムの書き方

    この記事では、Javaで2つの数値の最大公約数(GCD:Greatest Common Divisor)を求める方法について解説します。最大公約数とは、2つの数値をどちらも余りなく割り切ることができる最大の整数のことです。 GCDの求め方:実行例 以下に具体的な実行例を示します。 入力 入力値が次のとおりであるとします。 値1 : 18 値2 : 24 出力 期待される出力は次のとおりです。 2つの数値のGCD : 6 アルゴリズム GCDを求める基本的な手順は以下のとおりです。 ステップ1 - 開始 ステップ2 - 3つの整数変数 input_1、input_2、gcd を宣言する ステップ