Python アームストロング数値チェッカー

数値がアームストロング (自己陶酔的) 数値であるかどうかを検証します。アームストロング (自己陶酔的) 数値は、その数値自体の桁数の累乗の合計が数値そのものと等しくなります。

エディターで試してみる

概要

アームストロング数 (ナルシスト数またはプルパーフェクト デジタル不変数とも呼ばれる) は、その桁の n 乗の合計に等しい n 桁の数です。

たとえば、153 は、1^3 + 5^3 + 3^3 = 153 であるため、3 桁のアームストロング数です。同様に、9474 は、9^4 + 4^4 + 7^4 + 4^4 = 9474 であるため、4 桁のアームストロング数です。

これを Python で実装するには、簡単に桁数を数えて各桁を反復処理できるように、整数を文字列に変換します。

コードと実行の出力

一連の数値をチェックして、アームストロング数値の数学的基準を満たしているかどうかを判断します。

def is_armstrong(num):
    num_str = str(num)
    n = len(num_str)
    digit_sum = sum(int(digit) ** n for digit in num_str)
    return digit_sum == num

test_nums = [153, 370, 9474, 123]
for val in test_nums:
    result = "Armstrong" if is_armstrong(val) else "Not Armstrong"
    print(f"{val:4d} -> {result}")
端子出力
 153 -> Armstrong
 370 -> Armstrong
9474 -> Armstrong
 123 -> Not Armstrong

段階的な実装

  • 数論の研究と論理演習
  • 教室での数学プログラミングの課題
  • レクリエーションプログラミング

よくある質問

一桁の数字はすべてアームストロングの数字ですか?

はい。 1 桁の 1 乗はそれ自体と等しくなります (例: 5^1 = 5)。

関連トピック