Python 判断 N 是否为强素数


假设我们有一个数字 n。我们要检查 n 是否为强素数。众所周知,当一个素数大于其最近素数的平均值时,它被称为强素数。

因此,如果输入类似于 num = 37,则输出为 True,因为最近的素数是 31 和 41,平均值为 (31+41)/2 = 36。并且 37 > 36。

为了解决这个问题,我们将遵循以下步骤:

  • 如果 num 不是素数或 num 为 2,则
    • 返回 False
  • last := num - 1, next := num + 1
  • 当 next 不是素数时,执行
    • next := next + 1
  • 当 last 不是素数时,执行
    • last := last - 1
  • avg := (last + next) / 2
  • 如果 num > avg,则
    • 返回 True
  • 返回 False

示例

让我们看看下面的实现来更好地理解:

 在线演示

def isPrime(num):
   if num > 1:
      for i in range(2,num):
         if num % i == 0:
            return False
      return True
   return False
def solve(num):
   if isPrime(num) == False or num == 2:
      return False
   last = num - 1
   next = num + 1
   while isPrime(next) == False:
      next += 1
   while isPrime(last) == False:
      last -= 1
   avg = (last + next) / 2
   if num > avg:
      return True
   return False
num = 37
print(solve(num))

输入

37

Learn Python in-depth with real-world projects through our Python certification course. Enroll and become a certified expert to boost your career.

输出

True

更新于:2021年1月19日

615 次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告