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

दिए गए संख्याओं के सहअभाज्य (कोप्राइम) होने की जाँच करने का C++ प्रोग्राम


मान लीजिए nums सरणी में n पूर्णांक दिए गए हैं। हमें ज्ञात करना है कि सरणी की संख्याएँ युग्मवार सहअभाज्य (pairwise coprime), समुच्चयवार सहअभाज्य (setwise coprime), या सहअभाज्य नहीं (not coprime) हैं।

  • दो संख्याएँ nums[i] और nums[j] युग्मवार सहअभाज्य कहलाती हैं यदि gcd(nums[i], nums[j]) = 1। यह सरणी के हर संख्या युग्म के लिए लागू होना चाहिए जहाँ i < j।
  • संख्याएँ समुच्चयवार सहअभाज्य कहलाती हैं यदि सभी संख्याओं का gcd 1 हो।
  • यदि वे न तो युग्मवार और न ही समुच्चयवार सहअभाज्य हैं, तो हम कहते हैं कि वे सहअभाज्य नहीं हैं।

उदाहरण के लिए, यदि इनपुट है n = 4, nums = {7, 11, 13, 17}, तो आउटपुट होगा "The numbers are pairwise coprime"।

यदि हम सरणी में हर संख्या युग्म की जाँच करें, तो उनका gcd हमेशा 1 होगा।

चरण

इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:

आकार 100 का सरणी fac 0 से आरंभ करें
आकार 100 का सरणी checkPrime 0 से आरंभ करें
gcdVal := 0
i := 0 से n-1 तक:
    gcdVal := gcd(nums[i], gcdVal)
    fac[nums[i]] बढ़ाएँ
यदि gcdVal == 1, तो:
    pw := true
    k := 2 से 99 तक:
        यदि checkPrime[k] सत्य है, तो जारी रखें
        c := 0
        j := k से 99 तक k के चरणों में:
            c := c + fac[j]
            checkPrime[j] := true
        pw := pw AND (c <= 1)
    यदि pw सत्य है, तो:
        प्रिंट करें "The numbers are pairwise coprime"
    अन्यथा:
        प्रिंट करें "The numbers are setwise coprime"
अन्यथा:
    प्रिंट करें "The numbers are not coprime"

उदाहरण

बेहतर समझ के लिए निम्न कार्यान्वयन देखें:

#include <bits/stdc++.h> using namespace std; void solve(int n, int nums[]){    int fac[100] = {0};    bool checkPrime[100] = {0};    int gcdVal = 0;    for(int i = 0; i < n ; i++) {       gcdVal = __gcd(nums[i], gcdVal);       ++fac[nums[i]];    }    if(gcdVal == 1) {       bool pw = true;       for(int k = 2; k < 100; ++k) {          if(checkPrime[k])         continue; int c = 0; for(int j = k; j < 100; j += k) { c += fac[j]; checkPrime[j] = true; } pw = pw && c <= 1; } if(pw) cout<< "The numbers are pairwise coprime"; else cout<< "The numbers are setwise coprime"; } else cout << "The numbers are not coprime"; } int main() { int n = 4, nums[] = {7, 11, 13, 17}; solve(n, nums); return 0; }

इनपुट

4, {7, 11, 13, 17}

आउटपुट

The numbers are pairwise coprime
  1. C++ में जांचें कि दिया गया ट्री ग्राफ रैखिक है या नहीं C++ में जांचें कि दिया गया ट्री ग्राफ रैखिक है या नहीं

    यहां हम देखेंगे कि ट्री ग्राफ रैखिक है या नहीं, इसकी जांच कैसे करें। एक रैखिक ट्री ग्राफ को एक ही पंक्ति में व्यक्त किया जा सकता है। मान लीजिए यह एक रैखिक ट्री ग्राफ का उदाहरण है।लेकिन यह रैखिक नहीं है -किसी ग्राफ की जांच करने के लिए कि वह रैखिक है या नहीं, हम दो शर्तों का पालन कर सकते हैं:यदि नोड्स

  1. - C++ प्रोग्राम: जांचें कि दिया गया बाइनरी ट्री AVL ट्री है या नहीं

    AVL ट्री एक सेल्फ-बैलेंसिंग बाइनरी सर्च ट्री है जहां बाएं और दाएं सबट्री की ऊंचाई का अंतर सभी नोड्स के लिए एक से अधिक नहीं हो सकता। यह एक C++ प्रोग्राम है जो जांचता है कि दिया गया बाइनरी ट्री AVL ट्री है या नहीं। एल्गोरिदम Begin function AVL() दिए गए ट्री के AVL होने पर सच लौटाता है अन्यथा गलत। &nb

  1. - C++ प्रोग्राम: जांचें कि संख्या अभाज्य (Prime) है या नहीं

    परिचयएक अभाज्य संख्या एक पूर्ण संख्या है जो एक से बड़ी होती है और एक अभाज्य संख्या के केवल दो गुणनखंड होने चाहिए: एक और स्वयं। कुछ पहली अभाज्य संख्याएं हैं - 2, 3, 5, 7, 11, 13, 17 उदाहरण#include <iostream> using namespace std; int main() { int n = 17, i, flag = 0; for (i = 2; i <=