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

C++ में सरणी के तत्वों के LCM के अभाज्य गुणनखंड


इस समस्या में, हमें एक सरणी दी गई है जिसकी सीमा 1 ≤ arr[i] ≤ 10¹² है। हमारा कार्य सरणी के सभी तत्वों के LCM (लघुत्तम समापवर्त्य) के सभी अभाज्य गुणनखंडों को प्रिंट करना है।

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

इनपुट: सरणी = {2, 5, 15}
आउटपुट: 2 3 5
व्याख्या: LCM = 30, 30 के गुणनखंड = 2 * 3 * 5

इस समस्या को हल करने के लिए, हमें पहले सरणी के तत्वों का LCM निकालना होगा और फिर LCM के गुणनखंडों में से अभाज्य संख्याओं को छांटना होगा।

10⁶ क्रम की संख्याओं का LCM निकालना कंपाइलर के लिए भारी हो सकता है। इसलिए हमें अन्य तरीकों का उपयोग करना होगा।

हम इस अवधारणा का उपयोग करेंगे कि संख्याओं के अभाज्य गुणनखंड उनके LCM के भी अभाज्य गुणनखंड होंगे। इसके लिए, हम अभाज्य गुणनखंडन का उपयोग करेंगे और सुंदरम की छलनी (Sieve of Sundaram) एल्गोरिदम से अभाज्य संख्याएं खोजेंगे।

फिर एक गुणनखंड सरणी बनाएंगे जिसमें सरणी की संख्याओं के LCM के अभाज्य गुणनखंड होंगे।

उदाहरण

#include <bits/stdc++.h>
using namespace std;

const int MAX = 1000000;
typedef long long int ll;
vector <int> primeNumbers;

void findPrimeNumbers() {
    int n = MAX;
    int nNew = (n)/2;
    bool marked[nNew + 100];
    memset(marked, false, sizeof(marked));
    int tmp = sqrt(n);
    for (int i=1; i<=(tmp-1)/2; i++)
        for (int j=(i*(i+1))<<1; j<=nNew; j=j+2*i+1)
            marked[j] = true;
    primeNumbers.push_back(2);
    for (int i=1; i<=nNew; i++)
        if (marked[i] == false)
            primeNumbers.push_back(2*i + 1);
}

void printPrimeLCM(ll arr[], int n) {
    findPrimeNumbers();
    int factors[MAX] = {0};
    for (int i=0; i 1)
            factors[copy] = 1;
    }
    if (factors[2] == 1)
        cout << 2 << "\t";
    for (int i=3; i<=MAX; i=i+2)
        if (factors[i] == 1)
            cout << i << "\t";
}

int main() {
    ll arr[] = {20, 10, 15, 60};
    int n = sizeof(arr)/sizeof(arr[0]);
    cout << "सरणी की संख्याओं के LCM में अभाज्य गुणनखंड हैं:\n";
    printPrimeLCM(arr, n);
    return 0;
}

आउटपुट

सरणी की संख्याओं के LCM में अभाज्य गुणनखंड हैं:
2 3 5
  1. C++ में ऐरे में सभी अभाज्य संख्याओं का गुणनफल C++ में ऐरे में सभी अभाज्य संख्याओं का गुणनफल

    कुछ एलिमेंट्स के साथ एक इंटीजर ऐरे arr[] दिया गया है, कार्य उस ऐरे की सभी अभाज्य संख्याओं का गुणनफल निकालना है। अभाज्य संख्याएं वे संख्याएं होती हैं जो या तो 1 से विभाज्य होती हैं या स्वयं संख्या से, या एक अभाज्य संख्या वह संख्या है जो 1 और स्वयं संख्या को छोड़कर किसी अन्य संख्या से विभाज्य नहीं ह

  1. C++ में सरणी के एलिमेंट्स का गुणनफल C++ में सरणी के एलिमेंट्स का गुणनफल

    पूर्णांक एलिमेंट्स की एक सरणी दी गई है और कार्य सरणी के एलिमेंट्स को गुणा करना और प्रदर्शित करना है। उदाहरण इनपुट-: arr[]={1,2,3,4,5,6,7} आउटपुट-: 1 x 2 x 3 x 4 x 5 x 6 x 7 = 5040 इनपुट-: arr[]={3, 4,6, 2, 7, 8, 4} आउटपुट-: 3 x 4 x 6 x 2 x 7 x 8 x 4 = 32256 नीचे दिए गए प्रोग्राम में उपयोग किया गया द

  1. - C++ में पॉइंटर का उपयोग करके सरणी के एलिमेंट्स एक्सेस करने का प्रोग्राम

    पॉइंटर्स वेरिएबल्स के मेमोरी स्थान या पते को संग्रहीत करते हैं। दूसरे शब्दों में, पॉइंटर्स एक मेमोरी स्थान को संदर्भित करते हैं और उस मेमोरी स्थान पर संग्रहीत मान को प्राप्त करना पॉइंटर को डीरेफरेंस करना कहलाता है। एक प्रोग्राम जो सरणी के एकल एलिमेंट को एक्सेस करने के लिए पॉइंटर्स का उपयोग करता है,