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

C++ में N को 1 तक कम करने के लिए अधिकतम संचालन खोजें

अवधारणा

दी गई दो संख्याओं के संबंध में P और Q (P और Q 10^6 तक हो सकते हैं) जो एक संख्याN =(P!/Q!) बनाता है। हमारा कार्य अधिकतम संभव संक्रियाओं को निष्पादित करके N को घटाकर 1 करना है। याद रखें, प्रत्येक ऑपरेशन में, कोई N को N/X से बदल सकता है यदि N, X से विभाज्य है। संभव हो सकने वाले ऑपरेशनों की अधिकतम संख्या निर्धारित करें।

इनपुट

A = 7, B = 4

आउटपुट

4

स्पष्टीकरण

N 210 है और भाजक 2, 3, 5, 7 हैं

इनपुट

A = 3, B = 1

आउटपुट

2

स्पष्टीकरण

N 6 है और भाजक 2,3 है।

विधि

यह देखा गया है कि संख्या P!/Q! का गुणनखंडन! क्या यह संख्याओं के गुणनखंड के समान है(Q + 1)*(Q + 2)*…*(P – 1)*P.

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

मान लें कि 2 से 1000000 तक प्रत्येक संख्या के गुणनखंड में अभाज्य गुणनखंडों की संख्या गिनें।

सबसे पहले, इराटोस्थनीज की छलनी लागू करें इनमें से प्रत्येक संख्या का एक अभाज्य भाजक निर्धारित करने के लिए। इसे इस प्रकार समझाया गया है -

  • 2 से N:(2, 3, 4,…, N) तक लगातार पूर्णांकों की सूची बनाएं।

  • सबसे पहले, मान लें कि p बराबर 2, पहला अभाज्य संख्या है।

  • p^2 से शुरू करते हुए, p की वृद्धि में गिनें और इनमें से प्रत्येक संख्या को सूची में p^2 से बड़ा या उसके बराबर इंगित करें। तो, ये संख्याएं p(p+1), p(p+2), p(p+3), आदि हो सकती हैं।

  • सूची में p से बड़ी पहली संख्या निर्धारित करें जो इंगित नहीं की गई है। यह देखा गया है कि अगर ऐसा कोई नंबर नहीं था, तो रुक जाओ। अन्यथा, मान लें कि p अब इस संख्या के बराबर है (जो अगले अभाज्य को इंगित करता है), और चरण 3 से फिर से दोहराएं।

एराटोस्थनीज की चलनी विधि को लागू करने के बाद हम निम्नलिखित सूत्र को लागू करने के गुणनखंड में प्रमुख कारकों की संख्या की गणना कर सकते हैं -

प्राइमफैक्टर्स [संख्या] =प्राइमफैक्टर्स [संख्या / प्राइमडिविजर [संख्या]] + 1 वर्तमान में, कोई प्राइम फैक्टर के लिए उपसर्ग योग सरणी लागू कर सकता है और फिर अंतराल पर योग के लिए उत्तर दे सकता है [पी, क्यू]।

उदाहरण

// CPP program to find maximum
// number moves possible
#include <bits/stdc++.h>
using namespace std;
#define N 1000005
// Used to store number of prime
// factors of each number
int primeFactors1[N];
// Shows Function to find number of prime
// factors of each number
void findPrimeFactors(){
   for (int a = 2; a < N; a++)
   // Now if a is a prime number
   if (primeFactors1[a] == 0)
      for (int b = a; b < N; b += a)
         // Now increase value by one from
         // it's preveious multiple
   primeFactors1[b] = primeFactors1[b / a] + 1;
   // Build prefix sum
   // this will be helpful for
   // multiple test cases
   for (int a = 1; a < N; a++)
      primeFactors1[a] += primeFactors1[a - 1];
}
// Driver Code
int main(){
   // Create primeFactors1 array
   findPrimeFactors();
   int P = 7, Q = 4;
   // required answer
   cout << primeFactors1[P] - primeFactors1[Q];
   return 0;
}

आउटपुट

4

  1. C++ में भाज्य को विभाजित करने वाली संख्या की अधिकतम घात ज्ञात कीजिए

    मान लीजिए कि हमारे पास दो संख्याएँ n और तथ्य हैं। हमें n की सबसे बड़ी घात ज्ञात करनी है, जो तथ्य को विभाजित करती है! (तथ्य का तथ्य)। तो अगर फैक्ट =5, और n =2, तो आउटपुट 3 होगा। तो 5! =120, और यह 2^3 =8 से विभाज्य है। यहां हम लीजेंड्रे के सूत्र का उपयोग करेंगे। यह प्राइम की सबसे बड़ी शक्ति पाता है,

  1. C++ में अधिकतम उत्पाद चौगुनी संख्या ज्ञात कीजिए

    मान लीजिए कि हमारे पास n तत्वों के साथ एक पूर्णांक सरणी है। हमें सरणी में चौगुनी का अधिकतम गुणनफल खोजना है। तो अगर सरणी [3, 5, 20, 6, 10] की तरह है, तो अंतिम उत्पाद 6000 है, और चौगुनी में तत्व 10, 5, 6, 20 है इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - सरणी को आरोही क्रम में क्रमबद्ध करें मान

  1. पायथन में एन को 1 तक कम करने के लिए अधिकतम संचालन खोजें

    मान लीजिए कि हमारे पास दो संख्याएँ P और Q हैं और वे एक संख्या N =(P!/Q!) बनाते हैं। हमें यथासंभव अधिक से अधिक संक्रियाएँ निष्पादित करके N को घटाकर 1 करना होगा। प्रत्येक ऑपरेशन में, कोई N को N/X से बदल सकता है, जब N, X से विभाज्य हो। इसलिए, यदि इनपुट A =7, B =4 जैसा है, तो आउटपुट 4 होगा क्योंकि N 21