মান লেন, আমাদের কাছে একটি অ্যারে 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
- i কে 2 থেকে MAX-1 পর্যন্ত লুপ চালান:
- যদি sieve[i] true হয়, তবে j কে 2*i থেকে MAX পর্যন্ত i করে বাড়িয়ে sieve[j] := False করুন।
- মূল মেথড থেকে:
- generate_list_of_primes() কল করুন।
- total := 0
- i কে 0 থেকে arr সাইজ - ১ পর্যন্ত লুপ চালান:
- যদি sieve[arr[i]] true হয়, তবে 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