Giả sử chúng ta có một số mảng. Chúng ta phải kiểm tra xem tổng của tất cả các phần tử nguyên tố trong mảng đã cho cũng là số nguyên tố hay không
Vì vậy, nếu đầu vào giống như nums =[1,2,4,5,3,3], thì đầu ra sẽ là Đúng vì tổng của tất cả các số nguyên tố là (2 + 5 + 3 + 3) =13 và 13 cũng là nguyên tố.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- MAX:=10000
- sàng:=danh sách có kích thước MAX và điền bằng true
- Xác định một hàm create_list_of_primes ()
- sàng [0]:=Sai, sàng [1]:=Sai
- đối với tôi trong phạm vi 2 đến MAX - 1, thực hiện
- nếu sieve [i] là true, thì
- đối với j trong phạm vi 2 ^ i đến MAX, tăng thêm i
- sàng [j]:=Sai
- đối với j trong phạm vi 2 ^ i đến MAX, tăng thêm i
- nếu sieve [i] là true, thì
- Từ phương thức chính, hãy làm như sau:
- create_list_of_primes ()
- tổng số:=0
- đối với tôi trong phạm vi từ 0 đến kích thước của arr - 1, thực hiện
- nếu sieve [arr [i]] là true, thì
- tổng số:=total + arr [i]
- nếu sieve [arr [i]] là true, thì
- nếu sàng [tổng] là đúng, thì
- trả về True
- trả về Sai
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Mã mẫu
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))
Đầu vào
[1,2,4,5,3,3]
Đầu ra
True