हमें सकारात्मक पूर्णांकों की एक सरणी दी गई है। लक्ष्य एक सरणी में संख्याओं के उप-सरणी को ढूंढना है, जैसे कि प्रत्येक उप-सरणी में योग प्रमुख है। यदि सरणी {1,2,3,4} है। फिर उप-सरणी {1,2}, {2,3}, {3,4} होंगी। ऐसे उपसरणियों की संख्या 3 है।
आइए उदाहरणों के साथ समझते हैं
इनपुट - एआर [] ={1,3,5,3,2};
आउटपुट - प्राइम योग के साथ उपसरणियों की संख्या हैं:3
स्पष्टीकरण - उप-अभाज्य होंगे:{ 3,2} योग =5 अभाज्य, {3,5,3} योग =11 अभाज्य और {3,5,3,2} योग 13 अभाज्य है।
इनपुट - एआर [] ={2,4,6};
आउटपुट - अभाज्य योग के साथ उपसरणियों की संख्या हैं:0
स्पष्टीकरण - सभी उपसरणियों में गैर-अभाज्य योग होते हैं। {2,4}=6, {4,6}=10
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
हम सभी अभाज्य संख्याओं को एक छलनी का उपयोग करके अधिकतम मान 107 से कम पाएंगे और इसे वेक्टर <बूल> चेक में संग्रहीत करेंगे। यदि कोई संख्या अभाज्य है तो जाँचें [i] सत्य है और असत्य है। फिर लूप के लिए दो का उपयोग करके सरणी को पार करें, सबअरे के योग में तत्वों को जोड़ते रहें और जांचें कि क्या यह चेक [योग] का उपयोग करके प्रमुख है। यदि हाँ, तो अभाज्य योग के साथ उपसरणियों की संख्या बढ़ाएँ।
-
धनात्मक पूर्णांकों की एक सरणी arr[] लें।
-
समारोह sub_prime(int arr[], int size) सरणी लेता है और योग के साथ उप-सरणी की गिनती देता है।
-
प्रारंभिक गणना 0 के रूप में लें।
-
प्रारंभ करें temp=pow(10,7) अधिकतम मान के रूप में।
-
सदिश जांच को सही से प्रारंभ करें।
-
check[0] और check[1] झूठे हैं क्योंकि वे गैर-प्राइम हैं।
-
i=2 से i*i
-
अब सदिश जाँच [i] सत्य है यदि i अभाज्य है और असत्य है।
-
दो फॉर लूप्स का उपयोग करके फिर से ट्रैवर्स ऐरे।
-
सबएरे में तत्वों के योग के रूप में चर कुल लें। गिरफ्तार [i] गिरफ्तार करने के लिए [जे]। जहां i=0 से i
-
यदि कोई चेक [कुल] सत्य है। (योग योग अभाज्य है)। वेतन वृद्धि की संख्या।
-
परिणाम के रूप में सभी लूपों के अंत में वापसी की गणना करें।
उदाहरण
#include <bits/stdc++.h> using namespace std; int sub_prime(int arr[], int size){ int count = 0; int temp = int(pow(10, 7)); vector check(temp + 1, true); check[0] = false; check[1] = false; for (int i = 2; i * i <= temp; i++){ if (check[i] == true){ for (int j = i * 2; j <= temp; j += i){ check[j] = false; } } } for (int i = 0; i < size - 1; ++i){ int total = arr[i]; for (int j = i + 1; j < size; ++j){ total += arr[j]; if (check[total]){ ++count; } } } return count; } int main(){ int arr[] = { 3, 5, 1, 9, 5 }; int size = sizeof(arr) / sizeof(arr[0]); cout<<"Count of subarrays with Prime sum are: "<<sub_prime(arr, size); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Count of subarrays with Prime sum are: 1