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の間のアームストロング数を出力します。
コメントを残す