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

輸出

True

更新於:2021年1月19日

615 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.