檢查Python陣列中素數元素的和是否為素數


假設我們有一個數組nums。我們必須檢查給定陣列中所有素數元素的和是否也是素數。

因此,如果輸入類似於nums = [1,2,4,5,3,3],則輸出將為True,因為所有素數的和為(2+5+3+3) = 13,而13也是素數。

為了解決這個問題,我們將遵循以下步驟:

  • MAX := 10000
  • sieve := 一個大小為MAX的列表,並填充true
  • 定義一個函式generate_list_of_primes()
  • sieve[0] := False, sieve[1] := False
  • 對於範圍從2到MAX - 1的i,執行:
    • 如果sieve[i]為true,則
      • 對於範圍從2*i到MAX,步長為i的j:
        • sieve[j] := False
  • 在主方法中執行以下操作:
  • generate_list_of_primes()
  • total := 0
  • 對於範圍從0到arr大小-1的i,執行:
    • 如果sieve[arr[i]]為true,則
      • total := total + arr[i]
  • 如果sieve[total]為true,則
    • 返回True
  • 返回False

讓我們看看下面的實現來更好地理解:

示例程式碼

線上演示

MAX = 10000
sieve = [True] * MAX
 
def generate_list_of_primes() :
   sieve[0] = False
   sieve[1] = False
     
   for i in range(2, MAX) :
      if sieve[i] :
         for j in range(2**i, MAX, i) :
           sieve[j] = False
     
def solve(arr) :
   generate_list_of_primes()
   total = 0
   for i in range(len(arr)) :
      if sieve[arr[i]] :
         total += arr[i]

   if sieve[total] :
      return True
   return False

nums = [1,2,4,5,3,3]
print(solve(nums))

輸入

[1,2,4,5,3,3]

輸出

True

更新於:2021年1月16日

瀏覽量:117

開啟你的職業生涯

完成課程獲得認證

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