हमें सकारात्मक पूर्णांकों की एक सरणी दी गई है। लक्ष्य एक सरणी के तत्वों के अलग-अलग जोड़े की गिनती का पता लगाना है जिसमें कम से कम एक प्रमुख सदस्य हो। यदि सरणी [1,2,3,4] है तो जोड़े (1,2), (1,3), (2,3), (2,4) और (3,4) होंगे।
आइए उदाहरणों के साथ समझते हैं
इनपुट - एआर [] ={ 1,2,4,8,10};
आउटपुट − एक सरणी में जोड़े की संख्या जैसे कि कम से कम एक तत्व अभाज्य है − 4
स्पष्टीकरण - एकमात्र अभाज्य तत्व 2 है और इसे अन्य सभी के साथ जोड़ने पर - (1,2), (2,4), (2,8), (2,10) मिलेगा।
इनपुट - गिरफ्तार [] ={ 0,1,4,6,15 };
आउटपुट - एक सरणी में जोड़े की संख्या जैसे कि कम से कम एक तत्व अभाज्य है - 0
स्पष्टीकरण − सरणी में कोई अभाज्य तत्व नहीं है।
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
हम primes और non-prime को चिह्नित करने के लिए arr_2[] एक सरणी बनाएंगे। अगर arr_2[i] 0 है तो मैं अभाज्य है अन्यथा गैर-अभाज्य। यदि किसी युग्म के लिए कोई मान arr_2[A], arr_2[B] 0 है तो युग्म (A,B) की गणना की जाती है।
-
धनात्मक पूर्णांकों की एक सरणी arr[] लें।
-
फ़ंक्शन check_prime(int temp, int arr_2[] एक मान temp को उच्चतम और एक सरणी arr_2[] लेता है और arr_2[] को इंडेक्स के लिए 0 के साथ प्राइम 1 के रूप में पॉप्युलेट करता है।
-
arr_2[0]=arr_2[1]=0 सेट करें क्योंकि 0 और 1 दोनों गैर-प्राइम हैं।
-
अब लूप के लिए उपयोग करते हुए, i=2 से i*i
. तक ट्रैवर्स करें -
j=2*i से j<=temp और j+=i पर जाएं। गैर अभाज्य संख्याओं के लिए arr_2[j]=1 सेट करें।
-
फ़ंक्शन Prime_Pairs(int arr[], int size) एक सरणी और उसका आकार लेता है और ऐसे जोड़े की गिनती देता है जिनमें कम से कम एक तत्व प्रमुख है।
-
प्रारंभिक गणना 0 के रूप में लें।
-
सरणी के बीच अधिकतम मान के रूप में temp=*max_element(arr, arr + size) प्रारंभ करें।
-
कॉल check_prime(temp,arr_2). जहां arr_2[] को 0 के साथ प्रारंभ किया गया है और इसकी लंबाई अस्थायी है।
-
अब हमारे पास arr_2[] होगा जहां arr[i] i के लिए अभाज्य के रूप में 0 और गैर-अभाज्य के रूप में i के लिए 1 है।
-
i=0 से i<आकार और j=0 से j<आकार तक दो for लूप का उपयोग करते हुए ट्रैवर्स सरणी।
-
प्रत्येक जोड़ी arr[i], arr[j] के लिए जाँच करें कि क्या arr_2[arr[i] ] ==0 या arr_2[arr[j] ] ==0. यदि हाँ तो वेतन वृद्धि की गणना करें।
-
परिणाम के रूप में सभी लूपों के अंत में वापसी की गणना करें।
उदाहरण
#include <bits/stdc++.h> using namespace std; void check_prime(int temp, int arr_2[]){ arr_2[0] = 1; arr_2[1] = 1; for(int i = 2; i * i <= temp; i++){ if (arr_2[i]==0){ for (int j = 2 * i; j <= temp; j += i){ arr_2[j] = 1; } } } } int Prime_Pairs(int arr[], int size){ int count = 0; int temp = *max_element(arr, arr + size); int arr_2[temp + 1]; memset(arr_2, 0, sizeof(arr_2)); check_prime(temp, arr_2); for (int i = 0; i < size; i++){ for (int j = i + 1; j < size; j++){ if (arr_2[arr[i]] == 0 || arr_2[arr[j]] == 0){ count++; } } } return count; } int main(){ int arr[] = { 3, 5, 2, 7, 11, 14 }; int size = sizeof(arr) / sizeof(arr[0]); cout<<"Count of pairs in an array such that at least one element is prime are: "<<Prime_Pairs(arr, size); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Count of pairs in an array such that at least one element is prime are: 15