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

Pythonでアームストロング数を判定・生成する方法をわかりやすく解説

3桁の整数のうち、各桁の数字を3乗した値の合計が元の数と一致するものをアームストロング数(Armstrong number)と呼びます。たとえば「153」は、1³ + 5³ + 3³ = 1 + 125 + 27 = 153 となるため、アームストロング数です。

ある数がこの条件を満たすかどうかを調べるには、右端の桁から順に1桁ずつ取り出し、その3乗を累積的に加算していきます。最終的な合計が元の数と一致すれば、その数はアームストロング数であると判断できます。

アームストロング数の判定プログラム

以下のPythonコードは、100から999までの範囲に存在するすべてのアームストロング数を出力する例です。

for num in range(100, 1000):
    temp = num
    total = 0
    while temp > 0:
        digit = temp % 10
        total += digit ** 3
        temp //= 10

    if total == num:
        print(num)

実行結果

このコードを実行すると、100〜999の範囲内のアームストロング数がリストとして表示されます。

153
370
371
407

コードの仕組み

  • temp % 10:数値の一番右の桁(1の位)を取り出します。
  • digit ** 3:取り出した桁の3乗を計算し、合計に加算します。
  • temp //= 10:整数除算により処理済みの桁を取り除き、次の桁へ移ります。
  • ループが終了した時点で、合計値が元の数と一致すればアームストロング数と判定します。

補足:任意の桁数への拡張

アームストロング数の考え方は、4桁以上の数にも一般化できます。n桁の数の場合、各桁をn乗して合計が元の数と一致すればアームストロング数となります。上記のコードの digit ** 3 の部分を digit ** len(str(num)) に変更すれば、任意の桁数に対応した判定プログラムを作成できます。

  1. Pythonでアームストロング数(Armstrong Number)を判定する方法をわかりやすく解説

    アームストロング数とは?アームストロング数(Armstrong Number)とは、k桁の数 N の各桁の数字を k 乗した値の合計が、元の数 N と一致する数のことです。例えば、153 は 3桁の数であり、各桁の 3乗の和を計算すると以下のようになります。1³ + 5³ + 3³ = 1 + 125 + 27 = 153合計が元の数 153 と一致するため、153 はアームストロング数です。この記事では、与えられた数がアームストロング数であれば true を、そうでなければ false を返すプログラムを Python で実装します。解法のアルゴリズムアームストロング数の判定は、次の手順で行

  2. Pythonでアームストロング数を判定するプログラムの書き方

    この記事では、与えられた整数が「アームストロング数(Armstrong number)」であるかどうかを判定するための考え方と、Pythonによる具体的な実装方法を解説します。 問題の定義 整数 n が与えられたとき、その整数がアームストロング数であるかどうかを判定することを目標とします。 アームストロング数とは? n 桁の正の整数 abcd… が次の条件を満たすとき、この数は「n 次(オーダー n)のアームストロング数」と呼ばれます。 abcd... = a^n + b^n + c^n + d^n + … つまり、各桁の数字を「桁数乗」した値の総和が、元の数と一致するかを確認す