Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Số Armstrong trong Python

Giả sử có số N có k chữ số. N là số Armstrong khi tổng lũy thừa bậc k của từng chữ số bằng N. Cần trả về true nếu là số Armstrong, ngược lại false.

Để giải quyết:

  • power := số chữ số
  • temp := n, res = 0
  • Khi temp != 0:
    • res := res + (temp % 10) ^ power
    • temp := temp // 10 (chia nguyên)
  • Nếu res = n, trả về true, ngược lại false

Ví dụ

import math

class Solution(object):
    def poww(self, base, power):
        res = 1
        while power:
            if power & 1:
                res *= base
            base *= base
            power >>= 1
        return res

    def isArmstrong(self, n):
        power = int(math.log10(n)) + 1
        temp = n
        res = 0
        while temp:
            res += self.poww(temp % 10, power)
            temp //= 10
        return res == n

ob1 = Solution()
print(ob1.isArmstrong(153))

Đầu vào

153

Kết quả

True