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

जीसीडी () से सी ++ में प्रत्येक जोड़ी से मूल संख्याएं खोजें

अवधारणा

किसी दिए गए सरणी सरणी के संबंध में [] जिसमें किसी अन्य सरणी के तत्वों की हर संभावित जोड़ी की जीसीडी होती है, हमारा कार्य मूल संख्याओं को निर्धारित करना है जो जीसीडी सरणी की गणना करने के लिए उपयोग किए जाते हैं।

इनपुट

array[] = {6, 1, 1, 13}

आउटपुट

13 6
gcd(13, 13) = 13
gcd(13, 6) = 1
gcd(6, 13) = 1
gcd(6, 6) = 6

इनपुट

arr[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 6, 6, 8, 11, 13, 3, 3}

आउटपुट

13 11 8 6 6

विधि

  • सबसे पहले, सरणी को घटते क्रम में क्रमबद्ध करें।

  • सबसे बड़ा तत्व हमेशा मूल संख्याओं में से एक होगा। उस नंबर को बनाए रखें और उसे ऐरे से हटा दें।

  • पिछले चरण में लिए गए तत्व के जीसीडी की गणना करें और वर्तमान तत्व सबसे बड़े से शुरू करें और दिए गए सरणी से जीसीडी मान को त्याग दें।

उदाहरण

// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
// Shows utility function to print
// the contents of an array
void printArr(int array[], int n1){
   for (int i = 0; i < n1; i++)
      cout << array[i] << " ";
}
// Shows function to determine the required numbers
void findNumbers(int array[], int n1){
   // Used to sort array in decreasing order
   sort(array, array + n1, greater<int>());
   int freq1[array[0] + 1] = { 0 };
   // Here, count frequency of each element
   for (int i = 0; i < n1; i++)
      freq1[array[i]]++;
   // Shows size of the resultant array
   int size1 = sqrt(n1);
   int brr1[size1] = { 0 }, x1, l1 = 0;
   for (int i = 0; i < n1; i++) {
      if (freq1[array[i]] > 0) {
         // Here, store the highest element in
         // the resultant array
         brr1[l1] = array[i];
         //Used to decrement the frequency of that element
         freq1[brr1[l1]]--;
         l1++;
         for (int j = 0; j < l1; j++) {
            if (i != j) {
               // Calculate GCD
               x1 = __gcd(array[i], brr1[j]);
               // Decrement GCD value by 2
               freq1[x1] -= 2;
            }
         }
      }
   }
   printArr(brr1, size1);
}
// Driver code
int main(){
   /* int array[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 6, 6, 6, 8, 11, 13, 3, 3}; */
   int array[] = { 6, 1, 1, 13};
   int n1 = sizeof(array) / sizeof(array[0]);
   findNumbers(array, n1);
   return 0;
}

आउटपुट

13 6

  1. C++ प्रोग्राम रिकर्सिव यूक्लिड एल्गोरिथम का उपयोग करके दो नंबरों की GCD खोजने के लिए

    दो संख्याओं का सबसे बड़ा सामान्य भाजक (GCD) उन दोनों को विभाजित करने वाली सबसे बड़ी संख्या है। उदाहरण के लिए:मान लें कि हमारे पास दो संख्याएँ हैं जो 63 और 21 हैं। 63 = 7 * 3 * 3 21 = 7 * 3 तो, 63 और 21 का जीसीडी 21 है। पुनरावर्ती यूक्लिड का एल्गोरिथ्म सकारात्मक पूर्णांक a और b की एक जोड़ी का उपयो

  1. सी ++ प्रोग्राम जीसीडी खोजने के लिए

    दो संख्याओं का सबसे बड़ा सामान्य भाजक (GCD) उन दोनों को विभाजित करने वाली सबसे बड़ी संख्या है। उदाहरण के लिए:मान लें कि हमारे पास 45 और 27 दो संख्याएँ हैं। 45 = 5 * 3 * 3 27 = 3 * 3 * 3 तो, 45 और 27 का GCD 9 है। दो संख्याओं का GCD ज्ञात करने का कार्यक्रम इस प्रकार दिया गया है। उदाहरण #include <

  1. जीसीडी () पायथन में प्रत्येक जोड़ी से मूल संख्याएं खोजें

    मान लीजिए कि हमारे पास एक सरणी A है, जहां किसी अन्य सरणी के तत्वों के प्रत्येक संभावित युग्म का GCD दिया गया है, हमें मूल संख्याएँ ढूंढनी होंगी जिनका उपयोग दिए गए GCD सरणी की गणना करने के लिए किया जाता है। इसलिए, यदि इनपुट ए =[6, 1, 1, 13] जैसा है, तो आउटपुट [13, 6] होगा क्योंकि जीसीडी (13, 13) 13