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

C++ में दी गई संख्या के बराबर GCD के साथ प्राकृत संख्याओं के जोड़े गिनें

हमने 'स्टार्ट', 'एंड' और 'नंबर' के रूप में तीन इनपुट वेरिएबल दिए। लक्ष्य प्रारंभ और अंत के बीच संख्याओं के ऐसे जोड़े खोजना है जिनका GCD मान 'संख्या' के बराबर है। उदाहरण के लिए GCD(A,B)=number और A, B दोनों रेंज [स्टार्ट, एंड] में हैं।

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

इनपुट - प्रारंभ=5 अंत=20 संख्या=8

आउटपुट − दी गई संख्या के बराबर GCD वाली प्राकृत संख्याओं के युग्मों की संख्या है − 3

स्पष्टीकरण - 5 से 20 के बीच ऐसे जोड़े हैं कि जीसीडी 8 है - (8,8), (8,16), (16,8)

इनपुट - प्रारंभ=5 अंत=20 संख्या=7

आउटपुट − दी गई संख्या के बराबर GCD वाली प्राकृत संख्याओं के युग्मों की संख्या − 2

. है

स्पष्टीकरण − 20 से 30 के बीच ऐसे युग्म हैं कि GCD 7 है - (21,28), (28,21)

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

हम दो दृष्टिकोणों का उपयोग करेंगे। पहला भोले दृष्टिकोण जिसमें हम i=start से i<=end तक लूप के लिए और j=start से j<=end तक आंतरिक लूप का उपयोग करके पार करेंगे। प्रत्येक जोड़ी (i, j) के लिए जाँच करें कि क्या GCD(i,j)==number है। अगर सही वेतन वृद्धि गिनती है।

  • चर प्रारंभ, अंत और संख्या को पूर्णांक के रूप में लें।

  • फ़ंक्शन GCD(int a, int b) पुनरावर्ती है और तर्कों का GCD लौटाता है a,b इसे पास किया गया।

  • यदि b गैर-शून्य है तो यह स्वयं को पुनरावर्ती रूप से GCD(b,a%b) कहता है अन्यथा यह a देता है।

  • फ़ंक्शन GCD_pairs(int start, int end, int number) सीमा चर प्रारंभ, अंत और चर संख्या लेता है और प्रारंभ और अंत के बीच युग्म लौटाता है जिसमें gcd=number होता है।

  • प्रारंभिक गणना 0 के रूप में लें।

  • जोड़ी के प्रत्येक सदस्य के लिए दो लूप का उपयोग करना। बाहरी लूप i=स्टार्ट से i<=end तक और आंतरिक लूप j=स्टार्ट से j<=end तक।

  • युग्म (i,j), GCD(i,j)==number के लिए जाँच करें। अगर सही है, तो इंक्रीमेंट काउंट.

  • अंत में हमें gcd=number के साथ युग्मों की कुल संख्या मिल जाएगी।

  • परिणाम के रूप में वापसी की गिनती।

कुशल दृष्टिकोण

इस दृष्टिकोण में, हम प्रारंभ और अंत के मूल्यों को अद्यतन करेंगे। जोड़ी(i,j) के लिए gcd=number होने के लिए, i,j दोनों को 'संख्या' से विभाज्य होना चाहिए। कम से कम (एंड-स्टार्ट)/नंबर नंबर होंगे जो 'नंबर' को पूरी तरह से विभाजित करेंगे। प्रारंभ और अंत के बीच की संख्याएँ प्राप्त करने के लिए जो 'संख्या' से विभाज्य हैं, हम प्रारंभ =(प्रारंभ + संख्या - 1) / संख्या से अंत =अंत / संख्या; तो ऐसी प्रत्येक संख्या के लिए यदि gcd(i,j)==1 तो ऐसी जोड़ी (i,j) के लिए वृद्धि गणना।

  • चर प्रारंभ, अंत और संख्या को पूर्णांक के रूप में लें।

  • अद्यतन प्रारंभ =(प्रारंभ + संख्या -1)/नंबर। और अंत=अंत/संख्या।

  • फ़ंक्शन GCD(int a, int b) पुनरावर्ती है और तर्कों का GCD लौटाता है a,b इसे पास किया गया।

  • यदि b गैर-शून्य है तो यह स्वयं को पुनरावर्ती रूप से GCD(b,a%b) कहता है अन्यथा यह a देता है।

  • फ़ंक्शन GCD_pairs(int start, int end, int number) सीमा चर प्रारंभ, अंत और चर संख्या लेता है और प्रारंभ और अंत के बीच युग्म लौटाता है जिसमें gcd=number होता है।

  • प्रारंभिक गणना 0 के रूप में लें।

  • जोड़ी के प्रत्येक सदस्य के लिए दो लूप का उपयोग करना। बाहरी लूप i=स्टार्ट से i<=end तक और आंतरिक लूप j=स्टार्ट से j<=end तक।

  • जाँच करें कि क्या युग्म (i,j), GCD(i,j)==1 के लिए है। अगर सही है, तो इंक्रीमेंट काउंट.

  • अंत में हमें gcd=number के साथ युग्मों की कुल संख्या मिल जाएगी।

  • परिणाम के रूप में वापसी की गिनती।

उदाहरण (बेवकूफ दृष्टिकोण)

#include <bits/stdc++.h>
using namespace std;
int GCD(int a, int b){
   return b ? GCD(b, a % b) : a; }
int GCD_pairs(int start, int end, int number){
   int count = 0;
   for (int i = start; i <= end; i++){
      for (int j = start; j <= end; j++){
         if (GCD(i, j) == number){
            count++;
         }
      }
   }
   return count;
}
int main(){
   int start = 10, end = 30, number = 10;
   cout<<"Count of pairs of natural numbers with GCD equal to given number are: "<<GCD_pairs(start, end, number) << endl;
   return 0;
}

आउटपुट

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

Count of pairs of natural numbers with GCD equal to given number are: 7

उदाहरण (कुशल दृष्टिकोण)

#include <bits/stdc++.h>
using namespace std;
int GCD(int a, int b){
   return b ? GCD(b, a % b) : a;
}
int GCD_pairs(int start, int end, int number){
   int count = 0;
   for (int i = start; i <= end; i++){
      for (int j = start; j <= end; j++){
         if (GCD(i, j) == 1){
            count++;
         }
      }
   }
   return count;
}
int main(){
   int start = 10, end = 30, number = 10;
   start = (start + number - 1) / number;
   end = end / number;
   cout<<"Count of pairs of natural numbers with GCD equal to given number are: "<<GCD_pairs(start, end, number) << endl;
return 0;
}

आउटपुट

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

Count of pairs of natural numbers with GCD equal to given number are: 7

  1. C++ में दिए गए XOR के साथ सभी जोड़ियों की गणना करें

    इस ट्यूटोरियल में, हम दिए गए XOR के साथ युग्मों की संख्या ज्ञात करने के लिए एक प्रोग्राम पर चर्चा करेंगे। इसके लिए हमें एक सरणी और एक मान प्रदान किया जाएगा। हमारा काम उन युग्मों की संख्या ज्ञात करना है जिनका XOR दिए गए मान के बराबर है। उदाहरण #include<bits/stdc++.h> using namespace std; //ret

  1. C++ में k के बराबर अंतर वाले सभी अलग-अलग युग्मों की गणना करें

    इस ट्यूटोरियल में, हम k के बराबर अंतर वाले अलग-अलग जोड़े खोजने के लिए एक प्रोग्राम पर चर्चा करेंगे। इसके लिए हमें एक पूर्णांक सरणी और मान k प्रदान किया जाएगा। हमारा काम उन सभी अलग-अलग युग्मों को गिनना है जिनका अंतर k है। उदाहरण #include<iostream> using namespace std; int count_diffK(int arr[]

  1. C++ में दिए गए सूचकांकों के साथ N फाइबोनैचि संख्याओं की GCD ज्ञात कीजिए

    यहाँ हमें दिए गए सूचकांकों के साथ n फाइबोनैचि पदों की GCD ज्ञात करनी है। तो सबसे पहले हमें अधिकतम सूचकांक प्राप्त करना होगा, और फाइबोनैचि शब्द उत्पन्न करना होगा, कुछ फाइबोनैचि शब्द इस प्रकार हैं:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ….. सूचकांक शुरू होता है 0 से। तो तत्व 0th . पर सूचकांक 0 है। यदि हमें स