ধরুন আমরা একটি অ্যারে সংখ্যা আছে. আমাদের পরীক্ষা করতে হবে যে প্রদত্ত অ্যারের সমস্ত মৌলিক উপাদানের যোগফলও প্রাইম কি না
সুতরাং, যদি ইনপুটটি সংখ্যার মত হয় =[1,2,4,5,3,3], তাহলে আউটপুটটি True হবে কারণ সমস্ত প্রাইমের যোগফল (2+5+3+3) =13 এবং 13ও প্রাইম।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- MAX :=10000
- চালনি :=MAX আকারের একটি তালিকা এবং সত্য দিয়ে পূরণ করুন
- একটি ফাংশন generate_list_of_primes() সংজ্ঞায়িত করুন
- চালনী[0] :=মিথ্যা, চালনি[1] :=মিথ্যা
- আমি রেঞ্জ 2 থেকে MAX - 1 এর জন্য, কর
- যদি চালনি[i] সত্য হয়, তাহলে
- 2^i থেকে MAX পর্যন্ত j এর জন্য, i
- দ্বারা বাড়ান
- চালনী[j] :=মিথ্যা
- 2^i থেকে MAX পর্যন্ত j এর জন্য, i
- যদি চালনি[i] সত্য হয়, তাহলে
- প্রধান পদ্ধতি থেকে নিম্নলিখিতগুলি করুন:
- generate_list_of_primes()
- মোট :=0
- এর জন্য 0 থেকে arr - 1 এর আকারের মধ্যে, do
- যদি চালনি[arr[i]] সত্য হয়, তাহলে
- মোট :=মোট + arr[i]
- যদি চালনি[arr[i]] সত্য হয়, তাহলে
- যদি চালনী [মোট] সত্য হয়, তাহলে
- সত্য ফেরান
- মিথ্যে ফেরত দিন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ কোড
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