假设我们有一个数组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