检查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
- 对于范围从2*i到MAX,步长为i的j:
- 如果sieve[i]为true,则
- 在主方法中执行以下操作:
- generate_list_of_primes()
- total := 0
- 对于范围从0到arr大小-1的i,执行:
- 如果sieve[arr[i]]为true,则
- total := total + arr[i]
- 如果sieve[arr[i]]为true,则
- 如果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
广告