Section 2 / 11
最大公約数と最小公倍数の計算(ユークリッドの互除法)
この教材では、最大公約数(GCD)と最小公倍数(LCM)の計算方法について学びます。特に、ユークリッドの互除法を用いたGCDの計算に焦点を当て、その後にLCMを計算する方法を説明します。
最大公約数(GCD)の計算
ユークリッドの互除法
ユークリッドの互除法は、二つの整数の最大公約数を効率的に求めるためのアルゴリズムです。このアルゴリズムは次のように動作します:
- 二つの整数 ( a ) と ( b ) (( a \geq b ))を用意します。
- ( a ) を ( b ) で割った余りを計算します。
- 余りが 0 でない場合、( a ) を ( b ) に、( b ) を余りに置き換えます。
- 余りが 0 になるまで繰り返します。
- 最後に残った ( b ) が最大公約数です。
Pythonでの実装
以下に、ユークリッドの互除法を用いたGCDの計算のサンプルコードを示します。
def gcd(a, b):
while b:
a, b = b, a % b
return a
# 使用例
num1 = 48
num2 = 18
result_gcd = gcd(num1, num2)
print(f"{num1} と {num2} の最大公約数は {result_gcd} です。")
コードの解説
gcd関数は、二つの引数 ( a ) と ( b ) を受け取ります。while b:の部分で、( b ) が 0 でない限りループを続けます。a, b = b, a % bで、( a ) と ( b ) の値を更新します。- ループが終了したとき、( a ) には最大公約数が残っており、それを返します。
最小公倍数(LCM)の計算
最小公倍数は、二つの整数の倍数の中で最小のものです。GCDを利用してLCMを効率的に計算することができます。LCMは以下の式で求められます:
[ \text{LCM}(a, b) = \frac{|a \times b|}{\text{GCD}(a, b)} ]
Pythonでの実装
以下に、GCDを利用してLCMを計算するサンプルコードを示します。
def lcm(a, b):
return abs(a * b) // gcd(a, b)
# 使用例
num1 = 48
num2 = 18
result_lcm = lcm(num1, num2)
print(f"{num1} と {num2} の最小公倍数は {result_lcm} です。")
コードの解説
lcm関数は、二つの引数 ( a ) と ( b ) を受け取ります。abs(a * b)で ( a ) と ( b ) の積の絶対値を計算します。- その後、
// gcd(a, b)で最大公約数で割り算を行い、最小公倍数を求めます。
まとめ
この教材では、ユークリッドの互除法を用いて最大公約数(GCD)を計算し、その結果を利用して最小公倍数(LCM)を求める方法について学びました。Pythonでの実装を通じて、アルゴリズムの理解を深めることができたと思います。今後は、これらの知識を活用して、より複雑な数理問題に挑戦してみてください。
このトピックの他のセクション:
- 素数判定のアルゴリズムとエラトステネスの篩
- 最大公約数と最小公倍数の計算(ユークリッドの互除法)(現在表示中)
- モジュラー演算の応用例
- Pythonでの乱数生成方法
- 疑似乱数生成の理論と利用ケース
- ハッシュ関数と暗号学的ハッシュの基礎
- RSA暗号の基本構造と実装
- 組み合わせ計算(順列と組み合わせ)
- 確率アルゴリズムの基礎(例: モンテカルロ法)
- パリティチェックとハミング符号の基礎
- 誤り訂正アルゴリズム(CRCの概要)