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

C++ में बाइनरी प्रतिनिधित्व में सेट बिट्स की अभाज्य संख्या


इस समस्या में, हमें दो पूर्णांक L और R दिए गए हैं। हमारा कार्य L से R के बीच उन संख्याओं की कुल संख्या प्रिंट करना है जिनके सेट बिट्स (set bits) की संख्या एक अभाज्य संख्या है।

आइए एक उदाहरण से समझते हैं:

इनपुट: L = 7, R = 12
आउटपुट: 6
व्याख्या:
7 -> 111, सेट बिट्स = 3, अभाज्य संख्या।
8 -> 1000, सेट बिट्स = 1, अभाज्य नहीं।
9 -> 1001, सेट बिट्स = 2, अभाज्य संख्या।
10 -> 1010, सेट बिट्स = 2, अभाज्य संख्या।
11 -> 1011, सेट बिट्स = 3, अभाज्य संख्या।
12 -> 1100, सेट बिट्स = 2, अभाज्य संख्या।

इस समस्या को हल करने के लिए, हम दी गई सीमा के प्रत्येक तत्व को पार करेंगे। और प्रत्येक संख्या में सेट बिट्स की कुल संख्या जांचेंगे, इसके लिए हम C++ के पूर्वनिर्धारित फंक्शन __builtin_popcount() का उपयोग करेंगे। फिर, हम उस संख्या के सेट बिट्स की अभाज्यता जांचेंगे। यदि अभाज्य है तो काउंट बढ़ाएंगे अन्यथा नहीं।

उदाहरण

#include <iostream>
using namespace std;

bool isPrimeNumber(int n) {
    if (n <= 1) return false;
    if (n <= 3) return true;
    if (n % 2 == 0 || n % 3 == 0) return false;
    for (int i = 5; i * i <= n; i = i + 6)
        if (n % i == 0 || n % (i + 2) == 0)
            return false;
    return true;
}

void printPrimeSetBits(int l, int r) {
    int tot_bit, count = 0;
    for (int i = l; i <= r; i++) {
        tot_bit = __builtin_popcount(i);
        if (isPrimeNumber(tot_bit))
            count++;
    }
    cout << count;
}

int main() {
    int L = 7, R = 13;
    cout << "कुल संख्याएं जिनके सेट बिट्स अभाज्य हैं " << L << " और " << R << " के बीच: ";
    printPrimeSetBits(L, R);
    return 0;
}

आउटपुट

कुल संख्याएं जिनके सेट बिट्स अभाज्य हैं 7 और 13 के बीच: 6
  1. - C++ में सेट बिट्स की संख्या के अनुसार ऐरे सॉर्ट करें

    यहां हम सेट-बिट्स के आधार पर ऐरे को सॉर्ट करने की एक दिलचस्प समस्या देखेंगे। जब ऐरे में किसी एलिमेंट में अधिक सेट-बिट्स होते हैं, तो उसे उस एलिमेंट से पहले रखा जाएगा जिसमें कम सेट बिट्स होते हैं। मान लीजिए कुछ नंबर्स हैं 12, 15, 7। तो सेट बिट्स मूल रूप से उनके बाइनरी प्रतिनिधित्व में 1s की संख्या है

  1. C++ प्रोग्राम: बाइनरी ट्री के प्रत्येक नोड में सेट बिट्स की संख्या प्रिंट करना C++ प्रोग्राम: बाइनरी ट्री के प्रत्येक नोड में सेट बिट्स की संख्या प्रिंट करना

    दिए गए बाइनरी ट्री में, फ़ंक्शन नोड्स में संग्रहीत कुंजियों के बाइनरी मान उत्पन्न करेगा और फिर उस बाइनरी समतुल्य में सेट बिट्स (1) की संख्या लौटाएगा। उदाहरण बाइनरी ट्री जिसमें कुंजियां हैं: 10 3 211 140 162 100 और 146 कुंजी बाइनरी समतुल्य सेट बिट्स (आउटपुट) 10 1010 2 3 0011 2 211 1101001

  1. - पायथन में बाइनरी प्रतिनिधित्व में प्राइम सेट बिट्स की संख्या

    मान लीजिए हमारे पास दो पूर्णांक L और R हैं, हमें रेंज [L, R] (सम्मिलित) में उन संख्याओं की गिनती ज्ञात करनी है जिनके बाइनरी रूप में प्राइम संख्या में सेट बिट्स हैं। उदाहरण के लिए, यदि इनपुट L = 6 और R = 10 है, तो आउटपुट 4 होगा, क्योंकि 4 संख्याएं 6(110), 7(111), 9(1001), 10(1010) हैं, जिनमें सभी मे