จำนวนที่แข็งแกร่งคืออะไร
จำนวนเต็มคือจำนวนที่เท่ากับผลรวมของแฟคทอเรียลของตัวเลข
ตัวอย่าง
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