इस समस्या में, हमें दो सरणियाँ arr1[] और arr2[] दी गई हैं। हमारा कार्य किसी सरणी के तत्वों को खोजने के लिए एक प्रोग्राम बनाना है जो किसी अन्य सरणी के किसी भी तत्व से विभाज्य नहीं हैं।
समस्या का विवरण: यहां, हमें arr1 से सभी तत्वों को खोजने की आवश्यकता है जो arr2 के किसी भी तत्व से विभाज्य नहीं हैं।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट: arr1[] ={17, 15, 5, 12, 8} arr2[] ={5, 4}
आउटपुट: 17पी>
स्पष्टीकरण -
arr1 के तत्व और उन्हें विभाजित करने वाले तत्व,
17 -> कोई भी तत्व इसे विभाजित नहीं कर सकता।
15 -> 5 तत्व को विभाजित करता है।
5 -> 5 तत्व को विभाजित करता है।
12 -> 4 तत्व को विभाजित करता है।
8 -> 4 तत्व को विभाजित करता है।
समाधान दृष्टिकोण -
प्रत्यक्ष विधि का उपयोग करके समस्या को हल करने का एक सरल और सरल तरीका है। हम arr1 के माध्यम से लूप करेंगे और arr1 के प्रत्येक तत्व के लिए, हम जांच करेंगे कि arr2 का कोई तत्व तत्व को विभाजित करता है या नहीं। यदि कोई तत्व इसे विभाजित नहीं करता है, तो तत्व को प्रिंट करें।
एल्गोरिदम -
चरण 1: arr1, i -> 0 से n-1 के लिए लूप।
चरण 2.1: प्रत्येक arr1[i], लूप arr2, j -> 0 से n-1 के लिए।
चरण 2.2.1 : अगर arr1[i]% arr2[j] ==0, फ्लैग जारी रखें =-1।
चरण 2.3: अगर झंडा !=-1, arr1[i] प्रिंट करें।
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,
उदाहरण
#include<iostream> using namespace std; void findEleNotDivisbleByArray(int arr1[], int arr2[], int arr1Size, int arr2Size) { int flag = 0; for (int i = 0; i < arr1Size; i++) { flag = 0; for (int j = 0; j < arr2Size; j++){ if( arr1[i] % arr2[j] == 0 ) { flag = -1; break; } } if ( flag == 0 ) cout<<arr1[i]<<"\t"; } } int main() { int arr1[] = {17, 15, 5, 12, 23, 8}; int arr2[] = {5, 4}; int arr1Size = sizeof(arr1)/sizeof(arr1[0]); int arr2Size = sizeof(arr2)/sizeof(arr2[0]); cout<<"Elements of an array that are not divisible by any element of another array are "; findEleNotDivisbleByArray(arr1, arr2, arr1Size, arr2Size); return 0; }
आउटपुट -
Elements of an array that are not divisible by any element of another array are 17 23. हैं
यह समाधान मान्य है लेकिन कुशल नहीं है। तो, आइए देखते हैं समस्या का कारगर समाधान,
इस पद्धति में, हम arr1 के तत्वों की एक सरणी isDivisible[] बनाएंगे। arr2 के सभी तत्वों के लिए, उनके सभी गुणकों को arr1 के सबसे बड़े तत्व तक चिह्नित करें। और उन सभी तत्वों को प्रिंट करें जिन्हें isDisible सरणी में गलत चिह्नित किया गया है।
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,
उदाहरण
#include<iostream> using namespace std; void findEleNotDivisbleByArray(int arr1[], int arr2[], int arr1Size, int arr2Size) { int maxEle = 0; for (int i = 0; i < arr1Size; i++) if (arr1[i] > maxEle) maxEle = arr1[i]; int mark[maxEle]; for (int i = 0; i < arr2Size; i++) for (int j = arr2[i]; j <= maxEle; j += arr2[i]) mark[j] = 1; for (int i = 0; i < arr1Size; i++) if ( mark[arr1[i]] != 1) cout << arr1[i] << endl; } int main() { int arr1[] = {17, 15, 5, 12, 8}; int arr2[] = {5, 4}; int arr1Size = sizeof(arr1)/sizeof(arr1[0]); int arr2Size = sizeof(arr2)/sizeof(arr2[0]); cout<<"Elements of an array that are not divisible by any element of another array are "; findEleNotDivisbleByArray(arr1, arr2, arr1Size, arr2Size); return 0; }
आउटपुट -
Elements of an array that are not divisible by any element of another array are 17