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

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


अवधारणा

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

इनपुट

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

विधि

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

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

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

उदाहरण

// दृष्टिकोण का C++ कार्यान्वयन #include <bits/stdc++.h> using namespace std; // सरणी की सामग्री प्रिंट करने के लिए उपयोगिता फ़ंक्शन दिखाता है void printArr(int array[], int n1){    for (int i = 0; i < n1; i++)       cout << array[i] << " "; } // आवश्यक संख्याओं को निर्धारित करने के लिए फ़ंक्शन दिखाता है void findNumbers(int array[], int n1){    // घटते क्रम में सरणी क्रमबद्ध करने के लिए उपयोग किया जाता है    sort(array, array + n1, greater<int>());    int freq1[array[0] + 1] = { 0 };    // यहां, प्रत्येक तत्व की आवृत्ति गिनें    for (int i = 0; i < n1; i++)       freq1[array[i]]++;    // परिणामी सरणी का आकार दिखाता है    int size1 = sqrt(n1);    int brr1[size1] = { 0 }, x1, l1 = 0;    for (int i = 0; i < n1; i++) {       if (freq1[array[i]] > 0) {          // परिणामी सरणी में उच्चतम तत्व संग्रहीत करें          brr1[l1] = array[i];          // उस तत्व की आवृत्ति घटाएं          freq1[brr1[l1]]--;          l1++;          for (int j = 0; j < l1; j++) {             if (i != j) {                // GCD की गणना करें                x1 = __gcd(array[i], brr1[j]);                // GCD मान को 2 से घटाएं                freq1[x1] -= 2;             }          }       }    }    printArr(brr1, size1); } // ड्राइवर कोड 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) दो संख्याओं का GCD वह सबसे बड़ी संख्या है जो दोनों को विभाजित करती है। उदाहरण 63 = 7 × 3 × 3 21 = 7 × 3 GCD(63, 21) = 21 यूक्लिड का रिकर्सिव एल्गोरिदम एल्गोरिदम: gcd(a, b) = gcd(b, a % b) जब तक b शून्य न हो जाए। C++ प्रोग्राम उदाहरण #include <iostream> using namespac

  1. - C++ प्रोग्राम: GCD (महत्तम समापवर्तक) खोजें

    परिचयदो संख्याओं का महत्तम समापवर्तक (GCD) वह सबसे बड़ी संख्या है जो दोनों को विभाजित करती है। उदाहरण के लिए: मान लें हमारे पास दो संख्याएं हैं 45 और 27। 45 = 5 * 3 * 3 27 = 3 * 3 * 3 इसलिए, 45 और 27 का GCD 9 है। उदाहरण 1 (यूक्लिडियन एल्गोरिदम)#include <iostream> using namespace std; int gcd(

  1. - Python में gcd() से प्रत्येक जोड़े के मूल नंबर ढूंढना

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