C++でHCF(最大公約数)を反復処理で求めるプログラム
この記事では、C++を使ってHCF(最大公約数)を反復処理(ループ)で求めるプログラムについて解説します。
HCF(Highest Common Factor:最大公約数)とは、2つ以上の整数に共通する約数の中で最も大きいものを指します。ここでは、2つの整数が与えられたとき、再帰呼び出しを使わずに反復的な関数でHCFを計算することを目標とします。
アルゴリズムの考え方
この手法では、減算を繰り返すことでHCFを求めます。具体的な手順は以下の通りです。
- 2つの数 a と b の大小を比較します。
- a が b より大きければ、a から b を引きます。
- b が a より大きければ、b から a を引きます。
- a と b が等しくなるまでこの操作を繰り返します。
- 両者が等しくなった時点の値がHCFとなります。
サンプルコード
#include <bits/stdc++.h>
using namespace std;
int get_HCF(int a, int b) {
while (a != b) {
if (a > b)
a = a - b;
else
b = b - a;
}
return a;
}
int main() {
int a = 60, b = 96;
cout << get_HCF(a, b) << endl;
return 0;
}
出力
12
コードの解説
この例では、60と96のHCFを計算しています。whileループの中で、大きい方の数から小さい方の数を引き続けることで、最終的に両者の値は12で一致します。これが60と96の最大公約数です。
なお、この減算法はロジックがシンプルで理解しやすい反面、数値が大きい場合は処理回数が増えて非効率になります。そのようなケースでは、剰余演算を利用したユークリッドの互除法を採用すると、より高速にHCFを求められます。用途や入力サイズに応じて適切な手法を選択するとよいでしょう。
-
C++で最小公倍数(LCM)を求めるプログラム:初心者向けに2つの方法を解説
最小公倍数(LCM: Least Common Multiple)とは、2つの整数に共通する倍数の中で最も小さい数のことです。プログラミングの基礎的なアルゴリズム学習においても頻出のテーマであり、C++を使えば簡単に求めることができます。最小公倍数とは?具体例で確認例として、15と9という2つの数を考えてみましょう。それぞれ素因数分解すると次のようになります。15 = 5 × 3 9 = 3 × 3この場合、15と9の両方を割り切れる最小の数、つまり最小公倍数は 45 となります。方法1:大きい方の数から順に増やしていく方法まず紹介するのは、最も直感的なアプローチです。2つの数のうち大きい方
-
C++で2つの数の最大公約数(GCD)を求めるプログラム
最大公約数(GCD)とは最大公約数(GCD: Greatest Common Divisor)とは、2つの整数をどちらも割り切る正の整数のうち、最も大きい数のことです。プログラミングの基礎的なアルゴリズム問題としてよく取り上げられるテーマであり、分数の約分や暗号処理など、さまざまな場面で活用されます。例として、45と27という2つの数を考えてみましょう。45 = 5 × 3 × 327 = 3 × 3 × 3両方の数に共通する素因数は「3 × 3」であるため、45と27の最大公約数は9となります。方法1:ユークリッドの互除法による実装2つの数の最大公約数を求める最も効率的な方法が「ユークリッド