Pythonで指定した範囲内のアームストロング数を見つける方法
各桁の数字を3乗した値の合計が、元の数そのものと一致する数を「アームストロング数(Armstrong number)」と呼びます。例えば、153は以下のように表せるため、アームストロング数です。
153 = 1**3 + 5**3 + 3**3
サンプルプログラム
次のPythonプログラムは、100から1000までの範囲に含まれるアームストロング数をすべて見つけ出します。
for num in range(100, 1000):
temp = num
total = 0
while temp > 0:
digit = temp % 10
total = total + digit ** 3
temp = temp // 10
if total == num:
print(num)実行結果
このプログラムを実行すると、以下の出力が得られます。
153 370 371 407
プログラムの仕組み
このアルゴリズムのポイントは、各桁の数字を取り出す方法です。
- temp % 10:数値を10で割った余りを求めることで、一番下の桁(1の位)を取得します。
- temp // 10:整数除算を使うことで、すでに処理した桁を取り除き、残りの桁へ移動します。
whileループの中でこれらの処理を繰り返し、全桁の3乗の合計を計算します。ループ終了後、合計値が元の数と一致すれば、その数はアームストロング数であると判定して出力します。
なお、変数名として組み込み関数の sum を使うと上書きされてしまうため、上記のコードでは total という変数名を使用しています。これはPythonプログラミングにおける良い習慣です。
-
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」関数を使用します。この関数では、配列内の値が線形補間されるため、出力画像にお