Python
 Computer >> コンピューター >  >> プログラミング >> Python

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プログラミングにおける良い習慣です。

  1. Pythonで整数の桁数を求める方法をわかりやすく解説

    この記事では、ユーザーから入力された整数の桁数を求めるPythonプログラムを紹介します。初心者にもわかりやすいように、アルゴリズムの考え方からサンプルコード、実行結果まで順を追って解説していきます。 実行例 入力:123 → 出力:3入力:1987 → 出力:4 アルゴリズム 桁数を求める基本的な流れは以下の通りです。 ユーザーから整数値を入力として受け取ります。 数値を10で割り、その商を整数型(int)に変換します。 商が0でなければ、桁数のカウントを1つ増やします。 商が0になった時点でカウントを終了します。 処理を終了し、桁数を出力します。 サンプルコード x = int(

  2. Pythonのscikit-learnを使って画像の輪郭を検出する方法

    scikit-learn(通称:sklearn)は、機械学習アルゴリズムを実装するために使用されるPythonのライブラリです。オープンソースとして公開されているため、無料で利用できます。このライブラリは、NumPy・SciPy・Matplotlibという3つのライブラリを基盤として構築されています。画像から輪郭を抽出する際には、「マーチングスクエア法(marching squares)」と呼ばれる手法が用いられます。具体的には、skimageライブラリのmeasureモジュールに含まれる「find_contours」関数を使用します。この関数では、配列内の値が線形補間されるため、出力画像にお