Pythonで最小公倍数(LCM)を求める方法をわかりやすく解説
最小公倍数(LCM)とは
2つ(またはそれ以上)の数の最小公倍数(LCM:Least Common Multiple)とは、それらすべての数で割り切れる最も小さい数のことです。例えば、12と20の場合、両方の数で割り切れる最小の数は60となります。
基本的な求め方
シンプルなアルゴリズムは以下の手順で構成されます。
まず、与えられた2つの数のうち大きい方を取得します。その値から順に1ずつ増やしながら、両方の数で割り切れる最初の数を探します。見つかった数が最小公倍数(LCM)です。
サンプルコード
x=12
y=20
if x > y:
greater = x
else:
greater = y
while(True):
if((greater % x == 0) and (greater % y == 0)):
lcm = greater
break
greater += 1
print ("LCM of {} and {}={}".format(x,y,lcm))実行結果
出力は以下のようになります。
LCM of 12 and 20=60
より効率的な方法:GCDを利用する
扱う数が大きい場合、上記の方法ではループ回数が増えて計算に時間がかかることがあります。そんなときは、最大公約数(GCD)を利用すると効率的です。2つの数 a と b の最小公倍数は、次の公式で求められます。
LCM = a × b ÷ GCD(a, b)
GCDを使ったサンプルコード
import math
x = 12
y = 20
lcm = (x * y) // math.gcd(x, y)
print("LCM of {} and {}={}".format(x, y, lcm))この方法なら、ループ処理を一切行わずに瞬時に最小公倍数を計算できるため、実務でも推奨されるアプローチです。
-
Pythonで整数の桁数を求める方法をわかりやすく解説
この記事では、ユーザーから入力された整数の桁数を求めるPythonプログラムを紹介します。初心者にもわかりやすいように、アルゴリズムの考え方からサンプルコード、実行結果まで順を追って解説していきます。 実行例 入力:123 → 出力:3入力:1987 → 出力:4 アルゴリズム 桁数を求める基本的な流れは以下の通りです。 ユーザーから整数値を入力として受け取ります。 数値を10で割り、その商を整数型(int)に変換します。 商が0でなければ、桁数のカウントを1つ増やします。 商が0になった時点でカウントを終了します。 処理を終了し、桁数を出力します。 サンプルコード x = int(
-
Pythonのscikit-learnを使って画像の輪郭を検出する方法
scikit-learn(通称:sklearn)は、機械学習アルゴリズムを実装するために使用されるPythonのライブラリです。オープンソースとして公開されているため、無料で利用できます。このライブラリは、NumPy・SciPy・Matplotlibという3つのライブラリを基盤として構築されています。画像から輪郭を抽出する際には、「マーチングスクエア法(marching squares)」と呼ばれる手法が用いられます。具体的には、skimageライブラリのmeasureモジュールに含まれる「find_contours」関数を使用します。この関数では、配列内の値が線形補間されるため、出力画像にお