สมมติว่าเรามีจำนวน n เราต้องตรวจสอบว่า n เป็นแฟกทอเรียลไพรม์หรือไม่ ดังที่เราทราบดีว่าจำนวนหนึ่งเรียกว่าแฟกทอเรียลไพรม์เมื่อเป็นจำนวนเฉพาะที่น้อยกว่าหรือมากกว่าหนึ่งแฟกทอเรียลของจำนวนใดๆ
ดังนั้น หากอินพุตเป็น n =719 ผลลัพธ์จะเป็น True เนื่องจาก 719 =720 - 1 =6! - 1
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- ถ้า num ไม่ใช่จำนวนเฉพาะ แล้ว
- คืนค่าเท็จ
- แฟกทอเรียล :=1, ผม :=1
- ในขณะที่แฟกทอเรียล <=num + 1 ทำ
- แฟกทอเรียล :=แฟกทอเรียล * i
- ถ้า num + 1 เหมือนกับแฟกทอเรียลหรือ num - 1 เหมือนกับแฟกทอเรียล ดังนั้น
- คืนค่า True
- ผม :=ผม + 1
- คืนค่าเท็จ
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
from math import sqrt def isPrime(num) : if num <= 1: return False if num <= 3 : return True if num % 2 == 0 or num % 3 == 0: return False for i in range(5, int(sqrt(num)) + 1, 6) : if num % i == 0 or num % (i + 2) == 0: return False return True def solve(num) : if not isPrime(num) : return False factorial = 1 i = 1 while factorial <= num + 1: factorial *= i if num + 1 == factorial or num - 1 == factorial : return True i += 1 return False num = 719 print(solve(num))
อินพุต
719
ผลลัพธ์
True