मान लीजिए हमारे पास एक संख्या n है, हमें यह जांचना है कि n एक फैक्टोरियल प्राइम है या नहीं। जैसा कि हम जानते हैं, एक संख्या को फैक्टोरियल प्राइम कहा जाता है जब यह एक अभाज्य संख्या होती है जो किसी भी संख्या के फैक्टोरियल से एक कम या एक अधिक होती है।
तो, यदि इनपुट n = 719 है, तो आउटपुट True होगा क्योंकि 719 = 720 - 1 = 6! - 1
हल करने के चरण
- यदि num अभाज्य नहीं है, तो:
- False लौटाएं
- factorial := 1, i := 1
- जब तक factorial <= num + 1, तब तक:
- factorial := factorial * i
- यदि num + 1, factorial के समान है या num - 1, factorial के समान है, तो:
- True लौटाएं
- i := i + 1
- 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))
इनपुट
719
आउटपुट
True