Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

เขียนโปรแกรม Python เพื่อดูว่าตัวเลขเป็นตัวเลขที่คาดเดายากหรือไม่


จำนวนที่แข็งแกร่งคืออะไร

จำนวนเต็มคือจำนวนที่เท่ากับผลรวมของแฟคทอเรียลของตัวเลข

ตัวอย่าง

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

โปรแกรมต่อไปคือการค้นหาว่าตัวเลขที่ป้อนเป็นตัวเลขที่แข็งแกร่งหรือไม่ คืนค่า 'จริง' หากตัวเลขเป็นตัวเลขที่คาดเดายาก มิฉะนั้น ให้คืนค่า 'เท็จ'

  • เราใช้สองฟังก์ชัน isStrong() ซึ่งกำหนดว่าตัวเลขจะแรงหรือไม่ วิธีที่สองคือ factorial() ซึ่งจะคืนค่าแฟกทอเรียลของตัวเลขที่ส่งผ่าน

  • แฟกทอเรียล() ถูกเรียกจากภายใน isStrong() เพื่อรับแฟคทอเรียลของตัวเลขทั้งหมด (n%10) และเพิ่มเข้าไปในผลรวม

  • หลังจากแฟกทอเรียลของตัวเลขทั้งหมดรวมกันแล้ว ผลรวมจะถูกเปรียบเทียบกับตัวเลขเดิม หากเท่ากัน ระบบจะส่งคืนค่าจริง มิฉะนั้น ระบบจะส่งคืนค่าเท็จ

  • ทำไมเราต้องคัดลอก n เป็น จำนวน ใน isStrong() ? ในการวนซ้ำ while loop ค่าของ n จะเปลี่ยนเป็นศูนย์ แต่เราต้องการให้ค่าเดิมเปรียบเทียบกับผลรวมในภายหลัง ดังนั้นเราจึงจำเป็นต้องคัดลอกค่าของ n ไปไว้ในตัวแปรบางตัวก่อนที่จะเปลี่ยนแปลง

  • แฟกทอเรียล() ใช้การเรียกซ้ำเพื่อคำนวณแฟกทอเรียลของตัวเลข

ตัวอย่าง

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))

ผลลัพธ์

Input a number
145
True