檢查 N 是否為 Python 中的階乘素數


假設我們有一個數字 n,我們需要檢查 n 是否是階乘素數。眾所周知,當一個數字比任意數字的階乘少 1 或多 1 時,它被稱為階乘素數。

因此,如果輸入類似於 n = 719,則輸出將為 True,因為 719 = 720 - 1 = 6! - 1

為了解決這個問題,我們將遵循以下步驟 −

  • 如果 num 不是素數,則
    • 返回 False
  • 階乘 := 1,i := 1
  • 如果階乘 <= num + 1,則
    • 階乘 := 階乘 * i
    • 如果 num + 1 等於階乘或 num - 1 等於階乘,則
      • 返回 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

更新於: 19-Jan-2021

496 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.