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

10^6 से कम की सभी संख्याओं की गणना करें जिनका न्यूनतम अभाज्य गुणनखंड N C++ है

हमें एक अभाज्य संख्या दी गई है मान लीजिए, संख्या और कार्य 10^6 से कम की सभी संख्याओं की गणना करना है जिनका न्यूनतम अभाज्य गुणनखंड संख्या के बराबर है।

उदाहरण के लिए

Input − num = 7
Output − Number of prime factors = 38095

Input − num = 3
Output − Number of prime factors = 16666

नीचे दिए गए कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है

  • संख्या दर्ज करें मान लें कि संख्या है

  • लूप को i से 2 तक प्रारंभ करें और i को अधिकतम मान से कम या उसके बराबर होना चाहिए और i के मान को बढ़ाना चाहिए

  • लूप के अंदर, जांचें कि क्या s_prime[i] =0

  • लूप बनाएं, j को i * 2 पर सेट करें और j बराबर से अधिकतम से कम होना चाहिए और j को j + i पर सेट करना चाहिए

  • अब जांचें, अगर s_prime[j] =1

  • सेट करें s_prime[j] =1

  • s_count[i] 1 से बढ़ाएं

  • परिणाम प्रिंट करें

उदाहरण

#include <bits/stdc++.h>
using namespace std;
#define MAX 1000000
// a sieve for prime number and
// to count the number of prime
int s_prime[MAX + 4] = { 0 }, s_count[MAX + 4] = { 0 };
void create_sieve(){
   // As 1 is not a prime number
   s_prime[1] = 1;
   // creating the sieve
   for (int i = 2; i <= MAX; i++){
      // if i is a prime number
      if (s_prime[i] == 0){
         for (int j = i * 2; j <= MAX; j += i){
            // if i is the least prime factor
            if (s_prime[j] == 0){
               // The number j is not a prime
               s_prime[j] = 1;
               // counting the numbers whose least prime factor
               // is i
               s_count[i]++;
            }
         }
      }
   }
}
int main(){
   // create the sieve
   create_sieve();
   int N = 7;
   cout << "Number of prime factors = " << (s_count[N] + 1) << endl;
   N = 3;
   cout << "Number of prime factors = " << (s_count[N] + 1) << endl;
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

Number of prime factors = 38095
Number of prime factors = 166667

  1. सरणी के सभी तत्वों को C++ में 4 से विभाज्य बनाने के लिए न्यूनतम चरण

    समस्या कथन आकार n की एक सरणी को देखते हुए, कार्य सरणी के सभी तत्वों को 4 से विभाज्य बनाने के लिए आवश्यक न्यूनतम चरणों को खोजने के लिए है। एक चरण को सरणी से किन्हीं दो तत्वों को हटाने और इन तत्वों के योग को जोड़ने के रूप में परिभाषित किया गया है। सरणी के लिए उदाहरण यदि इनपुट ऐरे {1, 2, 0, 2, 4, 3}

  1. C++ में Y से कम संख्या वाले सेटों की न्यूनतम संख्या

    समस्या कथन लगातार अंकों की एक स्ट्रिंग और एक संख्या Y को देखते हुए, कार्य न्यूनतम सेटों की संख्या ज्ञात करना है जैसे कि प्रत्येक सेट नीचे दिए गए नियम का पालन करता है - सेट में लगातार संख्याएं होनी चाहिए किसी भी अंक का एक से अधिक बार उपयोग नहीं किया जा सकता है। सेट में संख्या Y से अधिक नहीं होनी चा

  1. C++ में n से कम या उसके बराबर सभी भाज्य संख्याएँ ज्ञात कीजिए

    यहां हम देखेंगे कि n से कम या उसके बराबर सभी भाज्य संख्याओं को कैसे मुद्रित किया जाता है, एक संख्या N को भाज्य संख्या कहा जाता है यदि यह एक धनात्मक संख्या का भाज्य है। तो कुछ भाज्य संख्याएं 1, 2, 6, 24, 120 हैं। फैक्टोरियल नंबर प्रिंट करने के लिए, हमें सीधे फैक्टोरियल खोजने की जरूरत नहीं है। I =1 स