この記事では、C言語を使って最大公約数を求めるプログラムの基本的な書き方を解説します。
プログラミング初心者の方でもわかりやすく解説しているので、ぜひ参考にしてみてください。
ユークリッドの互除法による最大公約数の求め方
最大公約数を求める方法の一つに「ユークリッドの互除法」があります。
ユークリッドの互除法は、2つの数の最大公約数を求めるための効率的なアルゴリズムです。
ユークリッドの互除法の基本的な考え方は、2つの数のうち大きい方を小さい方で割り、その余りを求めます。
そして、その余りを小さい方の数で割り、また余りを求めます。
この操作を繰り返し行い、余りが0になった時の除数が最大公約数となります。
例えば、2つの数が12と18の場合、以下のように計算します。
18 ÷ 12 = 1 余り 6
12 ÷ 6 = 2 余り 0
余りが0になった時の除数である6が、12と18の最大公約数となります。
最大公約数を求めるプログラムの基本的な書き方
プログラムの構造と流れ
最大公約数を求めるプログラムの基本的な構造と流れは以下の通りです。
- 2つの数を入力する
- ユークリッドの互除法を使って最大公約数を求める
- 最大公約数を出力する
入力値の取得
最大公約数を求めるためには、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になるまで繰り返し計算を行っています。
以上が、最大公約数を求めるプログラムの基本的な書き方についての解説です。