Python 阿姆斯壯數

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

筆者有用C++來解高中生解題系統上的 高中生程式解題系統:阿姆斯壯數 Armstrong number
(題目連結:https://zerojudge.tw/ShowProblem?problemid=a040) 一題。

本篇換用 Python 程式語言來解,而當時所寫的 C++ 為先建立好阿姆斯壯數的對應表,算有點偷吃步,這次用演算法來解囉。首先要知道數字是幾位數,可將數字轉成字串後,在呼叫計算字串長度函數 order = len(str(x)) ,接著就是將每位數的 order 次方加總(s),並檢查是否與原來數字相等。

Python程式碼:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import sys
  
def isArm (x):
    order = len(str(x))
    temp = x 
    s = 0
    while (temp != 0): 
        r = temp % 10
        s = s + (r ** order)
        temp = temp // 10
  
    return (s == x) 
  
  
for s in sys.stdin:
    n, m = map(int, s.split())

    flag = False

    for i in range(n, m):
        if isArm(i):
            flag = True
            print(str(i), end = " ")

    if flag == False:
        print("none")
    else:
        print()

沒有留言: