Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

एक श्रेणी में संख्याओं की गणना करें जो सी ++ में सभी सरणी तत्वों द्वारा विभाज्य हैं

संख्याओं की श्रेणी को परिभाषित करने के लिए हमें दो नंबर START और END दिए गए हैं। और सकारात्मक संख्याओं की एक सरणी Arr[] भी। लक्ष्य उन सभी संख्याओं को खोजना है जो Arr[] के सभी तत्वों से विभाज्य हैं और [START,END] की सीमा में हैं।

विधि 1 (निष्पक्ष दृष्टिकोण)

हम इसे START से END तक की संख्याओं को पार करके करेंगे और प्रत्येक संख्या के लिए हम जांच करेंगे कि संख्या सरणी के सभी तत्वों से विभाज्य है या नहीं। यदि हाँ, तो वेतन वृद्धि की गणना करें।

विधि 2 (सरणी तत्वों के एलसीएम द्वारा विभाज्यता की जांच करें)

हम सभी ऐरे एलीमेंट का एलसीएम ढूंढेंगे और फिर उस रेंज [START,END] में सभी नंबरों को चेक और गिनेंगे जो उस एलसीएम से पूरी तरह से विभाज्य हैं।

आइए उदाहरणों से समझते हैं।

इनपुट

START=1 END=20 Arr[]= { 2, 4, 8 }

आउटपुट

Numbers that are divisible by all array elements: 2

स्पष्टीकरण

Numbers 8 and 16 are in the range that are divisible by all array elements.

इनपुट

START=100 END=200 Arr[]= { 230, 321, 490, 521 }

आउटपुट

Numbers that are divisible by all array elements: 0

स्पष्टीकरण

No number between 100 to 200 divisible by any array element.

विधि 1 (निष्पक्ष दृष्टिकोण)

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

  • हम एक पूर्णांक START और END को श्रेणी चर के रूप में लेते हैं।

  • फंक्शन डिविजिबलबीएआर (इंट स्टार्ट, इंट एंड, इंट एआर [], इंट लेन) रेंज वेरिएबल और एरेज़ लेता है और सभी ऐरे एलिमेंट्स द्वारा विभाज्य संख्याओं की गिनती देता है।

  • ऐसी संख्याओं के लिए प्रारंभिक चर गणना को 0 के रूप में लें।

  • परिवर्तनीय ध्वज को 0 के रूप में लें

  • लूप के लिए उपयोग कर संख्याओं की ट्रैवर्स श्रेणी। i=शुरू से i=अंत तक

  • अब प्रत्येक संख्या के लिए num=i, जबकि लूप का उपयोग करके जांचें कि क्या संख्या सभी सरणी तत्वों से विभाज्य है।

  • यदि सभी तत्व पूरी तरह से num को विभाजित करते हैं, तो ध्वज =1 सेट करें।

  • बाहर अगर झंडा =1 वेतन वृद्धि गिनती

  • सभी लूपों के अंत में गिनती की कुल संख्या होगी जो सरणी के सभी तत्वों से विभाज्य है।

  • परिणाम के रूप में गिनती लौटाएं।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
int divisiblebyArr(int start, int end, int arr[], int len){
   int count = 0;
   int flag=0;
   int index=0;
   for (int i = start; i <= end; i++){
      int num = i;
      index=0;
      while(index<len){
         if(num % arr[index++] == 0)
            { flag=1; }
         else{
            flag=0;
            break;
         }
      }
      if (flag == 1)
         { count++; }
      }
   return count;
}
int main(){
   int START = 5, END = 20;
   int Arr[] = {2,4,8 };
   int len=sizeof(Arr)/sizeof(Arr[0]);
   cout <<"Numbers that are divisible by all array elements: "<< divisiblebyArr(START,END,Arr,len);
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

Numbers that are divisible by all array elements: 2

विधि 2 (एलसीएम दृष्टिकोण)

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

  • हम एक पूर्णांक START और END को श्रेणी चर के रूप में लेते हैं।

  • फ़ंक्शन getLCM(int a, int b) दो नंबर लेता है और उनमें से पहला नंबर ढूंढकर LCM लौटाता है जो लूप के दौरान दोनों का उपयोग करके विभाज्य है।

  • फ़ंक्शन getLCMArray(int arr[], int n) एक सरणी और उसकी लंबाई इनपुट के रूप में लेता है और सरणी के सभी तत्वों का LCM देता है।

  • getLCM (गिरफ्तारी [0], गिरफ्तारी [1]) के रूप में पहले एलसीएम की गणना करें। उसके बाद लगातार पिछले एलसीएम का एलसीएम खोजें और getLCM(lcm, arr[i]) पर कॉल करके [i] गिरफ्तार करें जहां i=2 से i

  • फंक्शन डिविजिबलबीएआर (इंट स्टार्ट, इंट एंड, इंट एआर [], इंट लेन) रेंज वेरिएबल और एरेज़ लेता है और सभी ऐरे एलिमेंट्स द्वारा विभाज्य संख्याओं की गिनती देता है।

  • ऐसी संख्याओं के लिए प्रारंभिक चर गणना को 0 के रूप में लें।

  • चर lcm को getLCMArray(int arr[], int len) के रूप में लें।

  • लूप के लिए उपयोग कर संख्याओं की ट्रैवर्स श्रेणी। i=शुरू से i=अंत तक

  • अब प्रत्येक संख्या i के लिए जाँच करें कि क्या यह विभाज्य lcm है। अगर सही है, तो इंक्रीमेंट काउंट.

  • सभी लूपों के अंत में गिनती की कुल संख्या होगी जो सरणी के सभी तत्वों से विभाज्य है।

  • परिणाम के रूप में गिनती लौटाएं।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
int getLCM(int a, int b){
   int m;
   m = (a > b) ? a : b;
   while(true){
      if(m % a == 0 && m % b == 0)
         return m;
      m++;
   }
}
int getLCMArray(int arr[], int n){
   int lcm = getLCM(arr[0], arr[1]);
   for(int i = 2; i < n; i++){
      lcm = getLCM(lcm, arr[i]);
   }
   return lcm;
}
int divisiblebyArr(int start, int end, int arr[], int len){
   int count = 0;
   int flag=0;
   int lcm=getLCMArray(arr,len);
   for (int i = start; i <= end; i++){
      if(i%lcm==0)
         { count++; }
      }
   return count;
}
int main(){
   int START = 5, END = 20;
   int Arr[] = {2,4,8 };
   int len=sizeof(Arr)/sizeof(Arr[0]);
   cout <<"Numbers that are divisible by all array elements: "<< divisiblebyArr(START,END,Arr,len);
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

Numbers that are divisible by all array elements: 2

  1. C++ में किसी सरणी में सभी अभाज्य संख्याओं का गुणनफल

    कुछ तत्वों के साथ एक पूर्णांक सरणी arr[] को देखते हुए, कार्य उस संख्याओं की सभी अभाज्य संख्याओं का गुणनफल खोजना है। अभाज्य संख्याएँ वे संख्याएँ होती हैं जिन्हें या तो 1 से या स्वयं संख्या से विभाजित किया जाता है, या एक अभाज्य संख्या एक ऐसी संख्या होती है जो 1 और स्वयं संख्या को छोड़कर किसी अन्य संख

  1. सरणी के सभी तत्वों को C++ में 4 से विभाज्य बनाने के लिए न्यूनतम चरण

    समस्या कथन आकार n की एक सरणी को देखते हुए, कार्य सरणी के सभी तत्वों को 4 से विभाज्य बनाने के लिए आवश्यक न्यूनतम चरणों को खोजने के लिए है। एक चरण को सरणी से किन्हीं दो तत्वों को हटाने और इन तत्वों के योग को जोड़ने के रूप में परिभाषित किया गया है। सरणी के लिए उदाहरण यदि इनपुट ऐरे {1, 2, 0, 2, 4, 3}

  1. एक सरणी तत्व खोजें जैसे कि सभी तत्व इसके द्वारा c++ . का उपयोग करके विभाज्य हैं

    विचार करें कि हमारे पास कुछ तत्वों के साथ एक सरणी ए है। हमें A से एक अवयव इस प्रकार ज्ञात करना है कि सभी तत्वों को इससे विभाजित किया जा सके। मान लीजिए कि ए [15, 21, 69, 33, 3, 72, 81] जैसा है, तो तत्व 3 होगा, क्योंकि सभी संख्याएं 3 से विभाज्य हो सकती हैं। इस समस्या को हल करने के लिए, हम ए में सबसे