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.example.com
# Python ユーザーが入力した数字がアームストロング数かどうかを検出
# ユーザーが入力した数字を取得
num = int(input("数字を入力してください:"))
# 変数 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 请输入一个数字: 345 345 不是阿姆斯特朗数 $ python3 test.py 请输入一个数字: 153 153 是阿姆斯特朗数 $ python3 test.py 请输入一个数字: 1634 1634 是阿姆斯特朗数
指定期間内のアームストロング数を取得する
例(Python 3.0+)
# Filename :test.py
# author by : www.example.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 までのアームストロング数を出力しました。
その他の拡張