检查给定的数字是否是 Python 中的 Wagstaff 素数


假设我们有一个数字 n。我们必须检查 n 是否是 Wagstaff 素数。众所周知,Wagstaff 素数是用以下形式表示的素数。

其中 q 是一个奇素数。

因此,如果输入像 n = 683,则输出将为 True n 可表示为

所以这里 q = 11。而且 q 是一个奇素数。

为了解决这个问题,我们将按照以下步骤操作 -

  • 如果 num 是素数并且 (num*3 - 1) 也是素数,那么
    • 返回 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 power_of_two(num):
   return num and not(num & (num - 1))

def solve(num) : 
   if isPrime(num) and power_of_two(num * 3-1): 
      return True
   return False

n = 683
print(solve(n))

输入

683

输出

True

更新于: 16-Jan-2021

110 次浏览

启动你的 职业

获得认证,完成该课程

开始
广告
© . All rights reserved.