检查 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 次浏览

开启你的职业生涯

通过完成课程获得认证

开始
广告