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 trongisStrong()để 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
nvàonumtrongisStrong()? Khi duyệt vòng lặp while, giá trịnsẽ thành 0. Nhưng cần giá trị gốc so sánh với tổng sau, nên copynvà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