हमें रेंज को परिभाषित करने के लिए दो संख्याएं START और END प्रदान की गई हैं। और धनात्मक संख्याओं का एक सरणी Arr[] भी। लक्ष्य उन सभी संख्याओं को ढूंढना है जो Arr[] के सभी तत्वों से विभाज्य हों और रेंज [START,END] में हों।
विधि 1 (सामान्य दृष्टिकोण)
हम इसे START से END तक संख्याओं को पार करके और प्रत्येक संख्या के लिए जांचेंगे कि क्या संख्या सरणी के सभी तत्वों से विभाज्य है। यदि हां तो काउंट बढ़ाएं।
विधि 2 (सरणी तत्वों के LCM से विभाज्यता जांचें)
हम सभी सरणी तत्वों का LCM ढूंढेंगे और फिर रेंज [START,END] में उन सभी संख्याओं की जांच और गणना करेंगे जो उस LCM से पूरी तरह विभाज्य हों।
उदाहरण से समझते हैं
इनपुट
START=1 END=20 Arr[]= { 2, 4, 8 } आउटपुट
सभी सरणी तत्वों से विभाज्य संख्याएं: 2
व्याख्या
संख्याएं 8 और 16 रेंज में हैं जो सभी सरणी तत्वों से विभाज्य हैं।
इनपुट
START=100 END=200 Arr[]= { 230, 321, 490, 521 } आउटपुट
सभी सरणी तत्वों से विभाज्य संख्याएं: 0
व्याख्या
100 से 200 के बीच कोई संख्या किसी भी सरणी तत्व से विभाज्य नहीं है।
विधि 1 (सामान्य दृष्टिकोण)
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण
हम रेंज चर के रूप में पूर्णांक START और END लेते हैं।
फ़ंक्शन divisiblebyArr(int start, int end, int arr[], int len) रेंज चर और सरणी लेता है और सभी सरणी तत्वों से विभाज्य संख्याओं की संख्या लौटाता है।
प्रारंभिक चर count को 0 से आरंभ करें ऐसी संख्याओं के लिए।
चर flag को 0 लें।
फॉर लूप का उपयोग करके संख्याओं की रेंज को पार करें। i=start से i=end
अब प्रत्येक संख्या num=i के लिए, व्हाइल लूप का उपयोग करके जांचें कि संख्या सभी सरणी तत्वों से विभाज्य है या नहीं।
यदि सभी तत्व num को पूरी तरह से विभाजित करते हैं, तो flag=1 सेट करें।
व्हाइल के बाहर यदि flag=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 <<"सभी सरणी तत्वों से विभाज्य संख्याएं: "<< divisiblebyArr(START,END,Arr,len); return 0; } आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा -
सभी सरणी तत्वों से विभाज्य संख्याएं: 2
विधि 2 (LCM दृष्टिकोण)
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण
हम रेंज चर के रूप में पूर्णांक START और END लेते हैं।
फ़ंक्शन getLCM(int a, int b) दो संख्याएं लेता है और व्हाइल लूप का उपयोग करके दोनों से विभाज्य पहली संख्या ढूंढकर उनका LCM लौटाता है।
फ़ंक्शन getLCMArray(int arr[], int n) एक सरणी और उसकी लंबाई लेता है और सरणी के सभी तत्वों का LCM लौटाता है।
पहले LCM की गणना getLCM(arr[0], arr[1]) के रूप में करें। उसके बाद लगातार पिछले lcm और arr[i] का lcm ढूंढें getLCM(lcm, arr[i]) को कॉल करके जहां i=2 से i
फ़ंक्शन divisiblebyArr(int start, int end, int arr[], int len) रेंज चर और सरणी लेता है और सभी सरणी तत्वों से विभाज्य संख्याओं की संख्या लौटाता है।
प्रारंभिक चर count को 0 से आरंभ करें ऐसी संख्याओं के लिए।
चर lcm को getLCMArray(int arr[], int len) के रूप में लें।
फॉर लूप का उपयोग करके संख्याओं की रेंज को पार करें। i=start से i=end
अब प्रत्येक संख्या 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 <<"सभी सरणी तत्वों से विभाज्य संख्याएं: "<< divisiblebyArr(START,END,Arr,len); return 0; } आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा -
सभी सरणी तत्वों से विभाज्य संख्याएं: 2