Python 阿姆斯特朗數(shù)

Document 對象參考手冊 Python3 實例

如果一個n位正整數(shù)等于其各位數(shù)字的n次方之和,則稱該數(shù)為阿姆斯特朗數(shù)。 例如1^3 + 5^3 + 3^3 = 153。

1000以內的阿姆斯特朗數(shù): 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407。

以下代碼用于檢測用戶輸入的數(shù)字是否為阿姆斯特朗數(shù):

# Filename : test.py
# author by : m.o2fo.com

# Python 檢測用戶輸入的數(shù)字是否為阿姆斯特朗數(shù)

# 獲取用戶輸入的數(shù)字
num = int(input("請輸入一個數(shù)字: "))

# 初始化變量 sum
sum = 0
# 指數(shù)
n = len(str(num))

# 檢測
temp = num
while temp > 0:
   digit = temp % 10
   sum += digit ** n
   temp //= 10

# 輸出結果
if num == sum:
   print(num,"是阿姆斯特朗數(shù)")
else:
   print(num,"不是阿姆斯特朗數(shù)")

執(zhí)行以上代碼輸出結果為:

$ python3 test.py 
請輸入一個數(shù)字: 345
345 不是阿姆斯特朗數(shù)

$ python3 test.py 
請輸入一個數(shù)字: 153
153 是阿姆斯特朗數(shù)

$ python3 test.py 
請輸入一個數(shù)字: 1634
1634 是阿姆斯特朗數(shù)

獲取指定期間內的阿姆斯特朗數(shù)

# Filename :test.py
# author by : m.o2fo.com

# 獲取用戶輸入數(shù)字
lower = int(input("最小值: "))
upper = int(input("最大值: "))

for num in range(lower,upper + 1):
   # 初始化 sum
   sum = 0
   # 指數(shù)
   n = len(str(num))

   # 檢測
   temp = num
   while temp > 0:
       digit = temp % 10
       sum += digit ** n
       temp //= 10

   if num == sum:
       print(num)

執(zhí)行以上代碼輸出結果為:

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

以上實例中我們輸出了 1 到 10000 之間的阿姆斯特朗數(shù)。

Document 對象參考手冊 Python3 實例