Factorial Prime คือ จำนวนเฉพาะที่มากกว่าหรือน้อยกว่า Factorial ของจำนวนหนึ่งอยู่ 1 (เช่น n! ± 1)
เช่น Input n = 719 Output True เพราะ 719 = 720 - 1 = 6! - 1
ขั้นตอนแก้:
- ถ้า num ไม่ใช่ Prime Return False
- factorial = 1, i = 1
- While factorial <= num + 1: factorial *= i; ถ้า num+1 == factorial หรือ num-1 == factorial Return True; i += 1
- Return False
ตัวอย่างโค้ด
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))
Input
719
Output
True