檢查給定的數字是否是 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.