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

C++ में N से कम या उसके बराबर सभी सेमी-प्राइम नंबर प्रिंट करें


इस समस्या में, हमें एक पूर्णांक N दिया जाता है। और हमें N से कम या उसके बराबर सभी अर्ध-अभाज्य संख्याओं को मुद्रित करना होता है।

इस समस्या को हल करने से पहले, आइए समझते हैं कि अर्ध-अभाज्य संख्या क्या है।

अर्ध-अभाज्य संख्या एक संख्या है जिसका मान दो भिन्न अभाज्य संख्याओं का गुणनफल होता है।

आइए एक उदाहरण लेते हैं,

21 =3*7 एक अर्ध अभाज्य संख्या है।

25 =5*5 अर्ध अभाज्य संख्या नहीं है।

अब, n से कम या उसके बराबर अर्ध अभाज्य संख्याओं का उदाहरण लेते हैं।

Input: N = 15
Output: 6 10 14 15

इस समस्या को हल करने के लिए, हमें प्रत्येक संख्या को N के बराबर से कम लेना होगा और जांचना होगा कि क्या इसके दो अलग-अलग अभाज्य गुणनखंड हैं।

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

उदाहरण

#include <bits/stdc++.h>
using namespace std;
vector<int>generateSemiPrimeNumbers(int n){
   int index[n + 1];
   for (int i = 1; i <= n; i++)
      index[i] = i;
   int countDivision[n + 1];
   for (int i = 0; i < n + 1; i++)
      countDivision[i] = 2;
   for (int i = 2; i <= n; i++) {
      if (index[i] == i && countDivision[i] == 2) {
         for (int j = 2 * i; j <= n; j += i) {
            if (countDivision[j] > 0) {
               index[j] = index[j] / i;
               countDivision[j]--;
            }
         }
      }
   }
   vector<int> semiPrime;
   for (int i = 2; i <= n; i++) {
      if (index[i] == 1 && countDivision[i] == 0) semiPrime.push_back(i);
   }
   return semiPrime;
}
int main(){
   int n = 15;
   cout<<"Semi-prime numbers less that or equal to "<<n<<"are :\n";
   vector<int>semiPrime = generateSemiPrimeNumbers(n);
   for (int i = 0; i < semiPrime.size(); i++)
      cout<<semiPrime[i]<<"\t";
   return 0;
}

आउटपुट

15 से कम या उसके बराबर अर्ध-अभाज्य संख्याएँ हैं -

6 10 14 15

  1. सी++ में मी से कम या उसके बराबर लंबाई की अधिकतम योग सरणी खोजें

    समस्या में, हमें अलग-अलग लंबाई के n सरणियाँ दी गई हैं। हमारा काम मी से कम या उसके बराबर लंबाई की अधिकतम योग सरणी खोजना है। योग को अधिकतम करने के लिए हमें सरणियों से उप-सरणी खोजने की आवश्यकता है और सभी उप-सरणी की लंबाई को m के बराबर बनाने की आवश्यकता है। समस्या को समझने के लिए एक उदाहरण लेते हैं,

  1. C++ में किसी सरणी में सभी अभाज्य संख्याओं का गुणनफल

    कुछ तत्वों के साथ एक पूर्णांक सरणी arr[] को देखते हुए, कार्य उस संख्याओं की सभी अभाज्य संख्याओं का गुणनफल खोजना है। अभाज्य संख्याएँ वे संख्याएँ होती हैं जिन्हें या तो 1 से या स्वयं संख्या से विभाजित किया जाता है, या एक अभाज्य संख्या एक ऐसी संख्या होती है जो 1 और स्वयं संख्या को छोड़कर किसी अन्य संख

  1. C++ में मिन हीप में मान x से कम के सभी नोड्स प्रिंट करें

    इस समस्या में, हमें एक मिनी हीप दिया जाता है और एक मान x और हमें x से कम के सभी नोड्स को प्रिंट करना होगा। न्यूनतम ढेर एक विशेष प्रकार का बाइनरी ट्री है जिसमें प्रत्येक नोड का मान उसके चाइल्ड नोड के नोड मान से कम होता है। आइए समस्या को समझने के लिए एक उदाहरण लेते हैं - X =45 आउटपुट - 2 4 7 10