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

C++ में दी गई रेंज में अभाज्य संख्याओं के बीच अधिकतम अंतर के लिए क्वेरीज़


समस्या विवरण

इस समस्या में, हमें Q क्वेरीज़ दी गई हैं जिनमें दो मान L और R होते हैं। हमारा कार्य C++ में दी गई रेंज में अभाज्य संख्याओं के बीच अधिकतम अंतर के लिए क्वेरीज़ को हल करने के लिए एक प्रोग्राम बनाना है।

समस्या विवरण: यहां, प्रत्येक क्वेरी में, हमें दो मान L और R दिए गए हैं। हमें दी गई रेंज के भीतर सबसे बड़ी और सबसे छोटी अभाज्य संख्याओं के बीच का अंतर यानी अधिकतम अंतर ढूंढना है।

उदाहरण

इनपुट

Q = 2
2 45
14 16
41 0

आउटपुट

व्याख्या

क्वेरी 1 के लिए, दी गई रेंज के भीतर सबसे छोटी अभाज्य संख्या 2 है और सबसे बड़ी 43 है। अंतर 43 - 2 = 41।

क्वेरी 2 के लिए, दी गई रेंज के भीतर कोई अभाज्य संख्या नहीं है, इसलिए आउटपुट 0 है।

समाधान दृष्टिकोण

समस्या को हल करने के लिए, हम दी गई रेंज तक 100005 तक अभाज्य संख्याओं की एक सरणी बनाएंगे। फिर, हम पहली अभाज्य संख्या ढूंढेंगे जो L से बड़ी है और पहली अभाज्य संख्या जो R से छोटी है। और उनका अंतर ढूंढेंगे।

कार्यक्रम उदाहरण

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

bool primeNumber[100005] ;

void findPrimes(){
    memset(primeNumber, true, sizeof(primeNumber));
    for (int i = 2; i * i < 100005; i++) {
        if (primeNumber[i]) {
            for (int j = i + i; j < 100005; j += i)
                primeNumber[j] = false;
        }
    }
}

int findPrimeInRange(int L, int R) {
    int LPrime = 0;
    int RPrime = 0;
    for(int i = L; i <= R; i++){
        if(primeNumber[i] == true){
            LPrime = i;
            break;
        }
    }
    for(int j = R; j >= L; j--){
        if(primeNumber[j] == true){
            RPrime = j;
            break;
        }
    }
    return (RPrime - LPrime);
}

int main() {
    int Q = 3;
    int query[Q][2] = {{4, 15}, {32, 37}, {54, 1100}};
    findPrimes();
    for (int i = 0; i < Q; i++)
        cout << "क्वेरी " << (i+1) << ": अभाज्य संख्याओं के बीच अधिकतम अंतर " << findPrimeInRange(query[i][0], query[i][1]) << "\n";
    return 0;
}

आउटपुट

क्वेरी 1: अभाज्य संख्याओं के बीच अधिकतम अंतर 8
क्वेरी 2: अभाज्य संख्याओं के बीच अधिकतम अंतर 0
क्वेरी 3: अभाज्य संख्याओं के बीच अधिकतम अंतर 1038
  1. - C++ प्रोग्राम: सेगमेंटेड छलनी द्वारा दी गई सीमा में अभाज्य संख्याएं उत्पन्न करना

    यह दी गई सीमा में अभाज्य संख्याएं उत्पन्न करने के लिए सेगमेंटेड छलनी को लागू करने वाला C++ प्रोग्राम है। सेगमेंटेड छलनी पहले सरल छलनी का उपयोग करके √n से छोटी या बराबर अभाज्य संख्याएं ढूंढती है। इस एल्गोरिदम का विचार रेंज [0 ... n-1] को विभिन्न सेगमेंट में विभाजित करना और एक-एक करके सभी सेगमेंट में

  1. - C++ प्रोग्राम: एटकिन की छलनी द्वारा दी गई सीमा में अभाज्य संख्याएं उत्पन्न करना

    यह दी गई सीमा में अभाज्य संख्याएं उत्पन्न करने के लिए एटकिन की छलनी को लागू करने वाला C++ प्रोग्राम है। एटकिन की छलनी एक निर्दिष्ट पूर्णांक तक सभी अभाज्य संख्याएं खोजने के लिए एक आधुनिक एल्गोरिदम है। एल्गोरिदम शुरुआत    एक परिणाम सूची बनाएं, जो 2, 3, और 5 से भरी हो।    छलनी सरणी

  1. - C++ प्रोग्राम: एराटोस्थनीज की छलनी द्वारा दी गई सीमा में अभाज्य संख्याएं उत्पन्न करना

    यह दी गई सीमा में अभाज्य संख्याएं उत्पन्न करने के लिए एराटोस्थनीज की छलनी को लागू करने वाला C++ प्रोग्राम है। इस विधि में, एक पूर्णांक सरणी जिसके सभी तत्व शून्य से आरंभ होते हैं। यह वहां अनुसरण करता है जहां प्रत्येक गैर-अभाज्य तत्व का सूचकांक नेस्टेड लूप के अंदर 1 के रूप में चिह्नित होता है। अभाज्य