Python アームストロング数

n桁の正の整数が、n乗の合計に等しい場合、その数値はアームストロング数と呼ばれます。例えば、1^3 + 5^3 + 3^3 = 153。

1000以内のアームストロング数は1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407です。

次のコードは、ユーザーが入力した数値がアームストロング数であるかどうかを検知するために使用されます。

実例(Python 3.0+)

# Filename : test.py
# author by : www.ceodata.com
 
# Python ユーザーが入力した数値がアームストロング数であるかどうかを確認する
 
# ユーザーが入力した数値を取得する
num = int(input("1つの数値を入力する: "))
 
# sum変数を初期化する
sum = 0
# インデックス
n = len(str(num))
 
# 検知
temp = num
while temp > 0:
   digit = temp % 10
   sum += digit ** n
   temp //= 10
 
# 結果を出力する
if num == sum:
   print(num,"はアームストロング数である")
else:
   print(num,"はアームストロング数ではない")

上記のコードを実行した結果は次のとおりです。

$ python3 test.py
1つの数値を入力する:345
345はアームストロング数ではない

$ python3 test.py
1つの数値を入力する:153
153はアームストロング数である

$ python3 test.py
1つの数値を入力する:1634
1634はアームストロング数である

指定された間隔内のアームストロング数を取得します

実例(Python 3.0+)

# Filename :test.py
# author by : www.ceodata.com
 
# ユーザーが入力した数値を取得する
lower = int(input("最小値: "))
upper = int(input("最大値: "))
 
for num in range(lower,upper + 1):
   #  sumを初期化する
   sum = 0
   # インデックス
   n = len(str(num))
 
   # 検知
   temp = num
   while temp > 0:
       digit = temp % 10
       sum += digit ** n
       temp //= 10
 
   if num == sum:
       print(num)

上記のコードを実行した結果は次のとおりです。

最小値:1
最大値:10000
1
2
3
4
5
6
7
8
9
153
370
371
407
1634
8208
9474

上記の例では、1から10000の間のアームストロング数を出力します。

Share

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です