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

C++ में बिटवाइज़ चलनी


इस समस्या में, हमें एक नंबर N दिया जाता है। हमारा काम बिटवाइज़ चलनी का उपयोग करके N से छोटी सभी अभाज्य संख्याओं को खोजना है।

बिटवाइज़ चलनी, सीव ऑफ़ एराटोस्थनीज़ का एक अनुकूलित संस्करण है जिसका उपयोग दी गई संख्या से छोटी सभी अभाज्य संख्याओं को खोजने के लिए किया जाता है।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

इनपुट -एन =25

आउटपुट - 2 3 5 7 11 13 17 19 23

बिटवाइज़ चलनी सामान्य चलनी की तरह ही काम करती है। यह सिर्फ हम एक बूलियन प्रकार के बजाय प्रतिनिधित्व primes के पूर्णांक के बिट्स का उपयोग करेंगे। यह अंतरिक्ष की जटिलता को 1/8 गुना तक कम कर देगा।

उदाहरण

आइए समाधान को समझने के लिए कोड देखें,

#include <iostream>
#include <math.h>
#include <cstring>
using namespace std;
bool ifnotPrime(int prime[], int x) {
   return (prime[x/64]&(1<<((x>>1)&31)));
}
bool makeComposite(int prime[], int x) {
   prime[x/64]|=(1<<((x>>1)&31));
}
void bitWiseSieve(int n){
   int prime[n/64];
   memset(prime, 0, sizeof(prime));
   for (int i = 3; i<= sqrt(n); i= i+2) {
      if (!ifnotPrime(prime, i))
      for (int j=pow(i,2), k= i<<1; j<n; j+=k)
      makeComposite(prime, j);
   }
   for (int i = 3; i <= n; i += 2)
   if (!ifnotPrime(prime, i))
      printf("%d\t", i);
}
int main(){
   int N = 37;
   printf("All the prime number less than %d are 2\t", N);
   bitWiseSieve(N);
   return 0;
}

आउटपुट

All the prime number less than 37 are 2 3 5 7 11 13 17 19 23 29 31 37

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

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

  1. C++ में योग S के साथ अभाज्य P के बाद अभाज्य संख्याएँ

    इस समस्या में, हमें तीन संख्याएँ दी गई हैं, योग S, अभाज्य P, और N। हमारा कार्य P से बड़ी सभी N अभाज्य संख्याओं का पता लगाना है जिनका योग S के बराबर है। हमारी समस्या को समझने के लिए एक उदाहरण लेते हैं Input: N = 2, P = 5, S = 18 Output: 7 11 Explanation: Prime numbers greater than 5 : 7 11 13 Sum =

  1. C++ में बिटवाइज़ या किसी ऐरे को अधिकतम करें

    समस्या कथन एन पूर्णांकों की एक सरणी को देखते हुए। बिटवाइज़ या सरणी के सभी तत्वों को एक कार्य करके अधिकतम किया जाना है। कार्य किसी दिए गए पूर्णांक x के साथ सरणी के किसी भी तत्व को अधिकतम k बार गुणा करना है यदि इनपुट ऐरे {4, 3, 6, 1}, k =2 और x =3 है तो अधिकतम मान प्राप्त किया जा सकता है 55 एल्गोरिद