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)) に変更すれば、任意の桁数に対応した判定プログラムを作成できます。
-
Pythonでアームストロング数(Armstrong Number)を判定する方法をわかりやすく解説
アームストロング数とは?アームストロング数(Armstrong Number)とは、k桁の数 N の各桁の数字を k 乗した値の合計が、元の数 N と一致する数のことです。例えば、153 は 3桁の数であり、各桁の 3乗の和を計算すると以下のようになります。1³ + 5³ + 3³ = 1 + 125 + 27 = 153合計が元の数 153 と一致するため、153 はアームストロング数です。この記事では、与えられた数がアームストロング数であれば true を、そうでなければ false を返すプログラムを Python で実装します。解法のアルゴリズムアームストロング数の判定は、次の手順で行
-
Pythonでアームストロング数を判定するプログラムの書き方
この記事では、与えられた整数が「アームストロング数(Armstrong number)」であるかどうかを判定するための考え方と、Pythonによる具体的な実装方法を解説します。 問題の定義 整数 n が与えられたとき、その整数がアームストロング数であるかどうかを判定することを目標とします。 アームストロング数とは? n 桁の正の整数 abcd… が次の条件を満たすとき、この数は「n 次(オーダー n)のアームストロング数」と呼ばれます。 abcd... = a^n + b^n + c^n + d^n + … つまり、各桁の数字を「桁数乗」した値の総和が、元の数と一致するかを確認す