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 है।

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

To solve the problem, we will create an array of prime numbers till 100005
which is the given range. Then, we will find the first prime number which is
greater than L and the first prime number which is smaller than R . and find
their difference.

हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,

उदाहरण

#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<<"For query "<<(i+1)<<": The maximum difference between primes numbers is "<<findPrimeInRange(query[i][0], query[i][1])<<"\n";
   return 0;
}

आउटपुट

For query 1: The maximum difference between primes numbers is 8
For query 2: The maximum difference between primes numbers is 0
For query 3: The maximum difference between primes numbers is 1038

  1. C++ प्रोग्राम दिए गए रेंज के बीच प्राइम नंबर जेनरेट करने के लिए सेगमेंटेड चलनी को लागू करने के लिए

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

  1. सी ++ प्रोग्राम दिए गए रेंज के बीच प्राइम नंबर उत्पन्न करने के लिए एटकिन की चलनी को लागू करने के लिए

    यह दिए गए रेंज के बीच प्राइम नंबर जेनरेट करने के लिए Sieve of Atkin को लागू करने के लिए C++ प्रोग्राम है। एटकिन की चलनी एक निर्दिष्ट पूर्णांक तक सभी अभाज्य संख्याओं को खोजने के लिए एक आधुनिक एल्गोरिथम है। एल्गोरिदम Begin    Create a results list, filled with 2, 3, and 5.    Initi

  1. C++ प्रोग्राम दिए गए रेंज के बीच प्राइम नंबर जेनरेट करने के लिए इरेटोस्थनीज की चलनी को लागू करने के लिए

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