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

C++ में बिटवाइज सीव (Bitwise Sieve)


इस समस्या में, हमें एक संख्या N दी गई है। हमारा कार्य बिटवाइज सीव (Bitwise Sieve) का उपयोग करके N से छोटी सभी अभाज्य संख्याओं को ढूंढना है।

बिटवाइज सीव, एराटोस्थनीज की छलनी (Sieve of Eratosthenes) का एक अनुकूलित संस्करण है जिसका उपयोग दी गई संख्या से छोटी सभी अभाज्य संख्याओं को ढूंढने के लिए किया जाता है।

उदाहरण

इनपुट - N = 25

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

बिटवाइज सीव सामान्य सीव के समान तरीके से काम करता है। सिर्फ इतना है कि हम बूलियन प्रकार के बजाय पूर्णांकों के बिट्स का उपयोग अभाज्य संख्याओं को दर्शाने के लिए करेंगे। यह स्पेस जटिलता को 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("%d से कम सभी अभाज्य संख्याएं हैं 2\t", N);
    bitWiseSieve(N);
    return 0;
}

आउटपुट

37 से कम सभी अभाज्य संख्याएं हैं 2 3 5 7 11 13 17 19 23 29 31 37
  1. C++ में ऐरे में सभी अभाज्य संख्याओं का गुणनफल C++ में ऐरे में सभी अभाज्य संख्याओं का गुणनफल

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

  1. - C++ में अभाज्य संख्या P के बाद N अभाज्य संख्याएं जिनका योग S हो

    इस समस्या में, हमें तीन संख्याएं दी गई हैं: योग S, अभाज्य P, और N। हमारा कार्य P से बड़ी उन N अभाज्य संख्याओं को ढूंढना है जिनका योग S के बराबर हो। आइए एक उदाहरण से समझते हैं: इनपुट: N = 2, P = 5, S = 18 आउटपुट: 7 11 व्याख्या: 5 से बड़ी अभाज्य संख्याएं: 7, 11, 13। योग = 7 + 11 = 18 इस समस्या को हल

  1. - C++ में ऐरे के बिटवाइज OR को अधिकतम करना

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