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

सी ++ में एकाधिक प्रश्नों के लिए चलनी ओ (लॉग एन) का उपयोग कर प्राइम फैक्टराइजेशन

इस समस्या में, हमें कई प्रश्नों के लिए चलनी ओ (लॉग एन) का उपयोग करके प्राइम फैक्टराइजेशन की गणना करने के लिए एक प्रोग्राम बनाने की आवश्यकता है।

जैसा कि सामान्य विधि में O(sqrt(n) ) समय लगता है जो कई प्रश्नों से आवश्यक समय को काफी हद तक बढ़ा देगा।

आइए पहले पुनर्कथन करें,

प्राइम फ़ैक्टराइज़ेशन किसी संख्या में केवल अभाज्य गुणनखंड शामिल होते हैं, उन अभाज्य गुणनखंडों का कोई उत्पाद नहीं।

इराटोस्थनीज की छलनी दी गई सीमा के भीतर सभी अभाज्य संख्याओं को उत्पन्न करने के लिए एक एल्गोरिथम है।

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

समस्या का समाधान संख्या को विभाजित करने वाले सबसे छोटे गुणनखंड को ढूंढकर, गुणनखंड के रूप में सहेज कर और गुणनखंड से विभाजित करके संख्या को अद्यतन करके प्राप्त किया जाता है। यह प्रक्रिया पुनरावर्ती रूप से तब तक की जाती है जब तक कि विभाजन के बाद संख्या 1 न हो जाए, जिसका अर्थ है कि कोई अन्य कारक संभव नहीं है।

गणना इरेटोस्थनीज की छलनी . का उपयोग करके की जाती है जो सबसे छोटे अभाज्य गुणनखंड को खोजने में लगने वाले समय की जटिलता को कम करता है।

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

उदाहरण

#include <iostream>
using namespace std;
int primes[100001];

void sieveOfEratosthenes(int N) {
   
   N+=2;
   primes[1] = 1;
   for (int i=2; i<N; i++)
      primes[i] = i;
   for (int i=4; i<N; i+=2)
      primes[i] = 2;
   for (int i=3; i*i<N; i++) {
      if (primes[i] == i) {
         for (int j=i*i; j<N; j+=i)
            if (primes[j]==j)
               primes[j] = i;
      }
   }
}
void findPrimeFactors(int num) {
   
   sieveOfEratosthenes(num);
   int factor;
   while (num != 1) {
      factor = primes[num];
      cout<<factor<<" ";
      num /= factor;
   }
}

int main() {
   int N = 45214;
   cout<<"Prime factorization of the number "<<N<<" using sieve is ";
   findPrimeFactors(N);
   return 0;
}

आउटपुट

Prime factorization of the number 45214 using sieve is 2 13 37 47

  1. बिटवाइज़ के लिए क्वेरीज़ या C++ . का उपयोग करके दिए गए ऐरे के इंडेक्स रेंज [L, R] में

    इस लेख में, हमें पूर्णांकों की एक सरणी दी गई है। हमें बिटवाइज़ या दी गई श्रेणी में मौजूद सभी नंबरों को खोजने का काम सौंपा गया है, उदाहरण के लिए, Input: arr[] = {1, 3, 1, 2, 3, 4}, q[] = {{0, 1}, {3, 5}} Output: 3 7 1 OR 3 = 3 2 OR 3 OR 4 = 7 Input: arr[] = {1, 2, 3, 4, 5}, q[] = {{0, 4}, {1, 3}} Out

  1. बिटवाइज़ के लिए क्वेरीज़ और C++ . का उपयोग करके दिए गए Array के इंडेक्स रेंज [L, R] में

    इस लेख में, हमने एक समस्या दी है जिसमें हमें पूर्णांकों की एक सरणी दी गई है, और हमें बिटवाइज़ और दी गई श्रेणियों को खोजने का काम सौंपा गया है, उदाहरण के लिए 7minus; Input: arr[ ] = {1, 3, 1, 2, 32, 3, 3, 4, 4}, q[ ] = {{0, 1}, {3, 5}} Output: 1 0 0 1 AND 31 = 1 23 AND 34 AND 4 = 00 Input: arr[ ] = {

  1. एक पेड़ में एक उपट्री के डीएफएस के लिए सी ++ प्रश्न

    इस समस्या में हमें एक बाइनरी ट्री दिया जाता है और हमें एक विशेष नोड से dfs करने की आवश्यकता होती है जिसमें हम दिए गए नोड को रूट मान लेते हैं और उससे dfs निष्पादित करते हैं। उपरोक्त पेड़ में मान लीजिए कि हमें नोड एफ से डीएफएस करने की आवश्यकता है इस ट्यूटोरियल में हम कुछ अपरंपरागत तरीकों को लागू क