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

ตรวจสอบว่า N เป็นแฟกทอเรียลไพรม์ใน Python . หรือไม่


สมมติว่าเรามีจำนวน 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