【C言語】最大公約数を求めるプログラムの書き方

この記事では、C言語を使って最大公約数を求めるプログラムの基本的な書き方を解説します。

プログラミング初心者の方でもわかりやすく解説しているので、ぜひ参考にしてみてください。

目次から探す

ユークリッドの互除法による最大公約数の求め方

最大公約数を求める方法の一つに「ユークリッドの互除法」があります。

ユークリッドの互除法は、2つの数の最大公約数を求めるための効率的なアルゴリズムです。

ユークリッドの互除法の基本的な考え方は、2つの数のうち大きい方を小さい方で割り、その余りを求めます。

そして、その余りを小さい方の数で割り、また余りを求めます。

この操作を繰り返し行い、余りが0になった時の除数が最大公約数となります。

例えば、2つの数が12と18の場合、以下のように計算します。

18 ÷ 12 = 1 余り 6
12 ÷ 6 = 2 余り 0

余りが0になった時の除数である6が、12と18の最大公約数となります。

最大公約数を求めるプログラムの基本的な書き方

プログラムの構造と流れ

最大公約数を求めるプログラムの基本的な構造と流れは以下の通りです。

  1. 2つの数を入力する
  2. ユークリッドの互除法を使って最大公約数を求める
  3. 最大公約数を出力する

入力値の取得

最大公約数を求めるためには、2つの数を入力する必要があります。

C言語では、scanf関数を使って入力値を取得することができます。

以下は、2つの数を入力するためのコードの例です。

int num1, num2;
printf("最大公約数を求める2つの数を入力してください:");
scanf("%d %d", &num1, &num2);

上記のコードでは、printf関数を使ってメッセージを表示し、scanf関数を使って2つの数を入力しています。

%dは整数を表す書式指定子であり、&演算子を使って変数のアドレスを指定します。

ユークリッドの互除法を実装する部分のコード

ユークリッドの互除法を実装するためには、ループを使って余りを求める操作を繰り返す必要があります。

以下は、ユークリッドの互除法を実装したコードの例です。

int gcd(int a, int b) {
    int remainder;
    while (b != 0) {
        remainder = a % b;
        a = b;
        b = remainder;
    }
    return a;
}

上記のコードでは、gcdという関数を定義しています。

この関数は、2つの数を引数として受け取り、最大公約数を返します。

whileループを使って、余りが0になるまで繰り返し計算を行っています。

以上が、最大公約数を求めるプログラムの基本的な書き方についての解説です。

目次から探す