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