检查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

开启你的职业生涯

完成课程获得认证

开始学习
广告