Strong Number คืออะไร?
Strong Number คือเลขที่เท่ากับผลรวมของ Factorial ของตัวเลขแต่ละหลัก
ตัวอย่าง
145 Factorial of 1=1 Factorial of 4=24 Factorial of 5=120 Sum=1+24+120 =145
โปรแกรมต่อไปนี้ใช้เพื่อหาว่า Input Number เป็น Strong Number หรือไม่ คืนค่า 'True' หากเป็น Strong Number มิฉะนั้นคืนค่า 'False'
เราใช้ 2 ฟังก์ชัน isStrong() เพื่อตัดสินว่าเลขเป็น Strong หรือไม่ ฟังก์ชันที่สองคือ factorial() คืนค่า Factorial ของหลักที่ส่งเข้า
factorial() ถูกเรียกจากภายใน isStrong() เพื่อหา Factorial ของทุกหลัก (n%10) และบวกเข้า Sum
หลังจาก Factorial ของทุกหลักถูกรวมกันแล้ว Sum จะถูกเปรียบเทียบกับเลขต้นฉบับ หากเท่ากัน คืนค่า True มิฉะนั้นคืนค่า False
ทำไมต้อง Copy n ไป num ใน isStrong() ? ในการ Iterate While Loop ค่าของ n จะเปลี่ยนเป็นศูนย์ แต่เราต้องการค่าต้นฉบับเพื่อเปรียบเทียบกับ Sum ทีหลัง จึงต้อง Copy ค่า n ไปตัวแปรอื่นก่อนที่จะเปลี่ยน
factorial() ใช้ Recursion คำนวณ Factorial ของหลักต่างๆ
ตัวอย่าง
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