Computer >> Máy Tính >  >> Lập trình >> Python

Viết chương trình Python để tìm xem một số có phải là số mạnh hay không

Số mạnh là gì?

Một số mạnh là một số có giá trị bằng tổng giai thừa của các chữ số của nó.

Ví dụ

145
Factorial of 1=1
Factorial of 4=24
Factorial of 5=120
Sum=1+24+120
   =145

Chương trình sau đây là để tìm xem số đầu vào có phải là một số mạnh hay không. Trả về "True" nếu số là số mạnh, nếu không, trả về "False".

  • Chúng tôi đang sử dụng hai hàm isStrong () xác định xem số có mạnh hay không, phương thức thứ hai là giai thừa () trả về giai thừa của chữ số đã chuyển.

  • Giai thừa () được gọi từ bên trong isStrong () để nhận giai thừa của tất cả các chữ số (n% 10) và cộng nó vào tổng.

  • Sau khi cộng lại giai thừa của tất cả các chữ số, tổng được so sánh với số ban đầu, nếu chúng bằng nhau thì trả về true, trả về false.

  • Tại sao chúng tôi sao chép n thành num trong isStrong () ? Khi lặp qua vòng lặp while, giá trị của n sẽ thay đổi thành 0, nhưng chúng tôi yêu cầu giá trị ban đầu được so sánh với tổng sau này và do đó, chúng tôi cần sao chép giá trị của n vào một số biến trước khi nó bị thay đổi.

  • Giai thừa () sử dụng đệ quy để tính giai thừa của các 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("Input a number")
a=int(input())
print(isStrong(a))

Đầu ra

Input a number
145
True