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

เขียนโปรแกรม Python ตรวจสอบว่าเลขเป็น Strong Number หรือไม่


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