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

ตรวจสอบว่า N เป็น Factorial Prime หรือไม่ด้วย Python


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