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

Viết chương trình Python kiểm tra số Strong Number


Strong Number (Số mạnh) là gì?

Strong number là số bằng tổng giai thừa của các chữ số của nó.

Ví dụ

145
Giai thừa của 1 = 1
Giai thừa của 4 = 24
Giai thừa của 5 = 120
Tổng = 1 + 24 + 120 = 145

Chương trình sau kiểm tra số đầu vào có phải strong number hay không. Trả về True nếu là strong number, ngược lại False.

  • Dùng hai hàm: isStrong() xác định số có mạnh không, factorial() trả về giai thừa của chữ số truyền vào.
  • factorial() được gọi từ bên trong isStrong() để lấy giai thừa của tất cả chữ số (n%10) và cộng vào tổng.
  • Sau khi cộng giai thừa tất cả chữ số, so sánh tổng với số gốc. Nếu bằng nhau trả về true, ngược lại false.
  • Tại sao copy n vào num trong isStrong()? Khi duyệt vòng lặp while, giá trị n sẽ thành 0. Nhưng cần giá trị gốc so sánh với tổng sau, nên copy n vào biến khác trước khi nó thay đổi.
  • factorial() dùng đệ quy (recursion) tính giai thừa chữ số.

Ví dụ

def factorial(d):
    if d == 1 or d == 0:
        return 1
    return d * factorial(d - 1)

def isStrong(n):
    num = n
    sm = 0
    while n > 0:
        digit = n % 10
        sm = sm + factorial(digit)
        n = n // 10
    if sm == num:
        return True
    else:
        return False

print("Nhập một số:")
a = int(input())
print(isStrong(a))

Kết quả

Nhập một số
145
True