检查数组的素数元素之和在Python中是否为素数

假设我们有一个数组nums。我们必须检查给定数组中所有素数元素的总和是否也是素数

因此,如果输入像nums = [1,2,4,5,3,3],则输出将为True,因为所有素数的和为(2 + 5 + 3 + 3)= 13,而13也为主要。

为了解决这个问题,我们将遵循以下步骤-

  • 最大:= 10000

  • 筛子:=大小为MAX并填充为true的列表

  • 定义功能 generate_list_of_primes()

  • sieve [0]:=错误,sieve [1]:=错误

  • 对于2到MAX-1范围内的i

    • 对于范围2 ^ i至MAX的j,增加i

    • 筛[j]:=假

    • 如果sieve [i]为真,则

    • 从主要方法执行以下操作:

    • generate_list_of_primes()

    • 总计:= 0

    • 对于范围从0到arr-1的i,执行

      • 总计:=总计+ arr [i]

      • 如果sieve [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