मान लीजिए हमारे पास एक सरणी 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
- j के लिए रेंज 2^i से MAX तक, i से बढ़ाएं
- यदि sieve[i] true है, तो
- मुख्य विधि से निम्नलिखित करें:
- generate_list_of_primes()
- total := 0
- i के लिए रेंज 0 से arr के आकार - 1 तक, करें
- यदि 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