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

C++ में क्वेरी: क्या संख्या में ठीक चार अलग-अलग गुणनखंड हैं

इस समस्या में, हमें Q संख्या में क्वेरी दी गई हैं, प्रत्येक में एक संख्या N है। हमारा कार्य C++ में क्वेरी को हल करने के लिए एक प्रोग्राम बनाना है कि क्या किसी संख्या में ठीक चार अलग-अलग गुणनखंड हैं या नहीं।

समस्या विवरण

प्रत्येक क्वेरी को हल करने के लिए, हमें यह पता लगाना होगा कि संख्या N में ठीक चार अलग-अलग गुणनखंड हैं या नहीं। यदि हैं तो YES प्रिंट करें, अन्यथा NO।

उदाहरण से समझते हैं

इनपुट: Q = 3, 4, 6, 15

आउटपुट: NO, YES, YES

व्याख्या

क्वेरी 1 के लिए: 4 के गुणनखंड 1, 2, 4 हैं

क्वेरी 2 के लिए: 6 के गुणनखंड 1, 2, 3, 6 हैं

क्वेरी 3 के लिए: 15 के गुणनखंड 1, 3, 5, 15 हैं

समाधान दृष्टिकोण

समस्या का एक सरल समाधान संख्या के सभी गुणनखंड ढूंढकर है। यह 1 से √N तक की सभी संख्याओं को ढूंढकर और काउंटर को 2 से बढ़ाकर किया जाता है। फिर चेक करें कि काउंटर 4 के बराबर है या नहीं और समानता के आधार पर YES या NO प्रिंट करें।

C++ प्रोग्राम उदाहरण (सरल दृष्टिकोण)

#include <iostream>
#include <math.h>
using namespace std;

int solveQuery(int N) {
    int factors = 0;
    for (int i = 1; i < sqrt(N); i++) {
        if (N % i == 0) {
            factors += 2;
        }
    }
    if (factors == 4) {
        return 1;
    }
    return 0;
}

int main() {
    int Q = 3;
    int query[3] = {4, 6, 15};
    for (int i = 0; i < Q; i++) {
        if (solveQuery(query[i]))
            cout << "The number " << query[i] << " has exactly four distinct factors\n";
        else
            cout << "The number " << query[i] << " does not have exactly four distinct factors\n";
    }
}

आउटपुट

The number 4 does not have exactly four distinct factors
The number 6 has exactly four distinct factors
The number 15 has exactly four distinct factors

एक कुशल दृष्टिकोण चार-गुणनखंड संख्याओं के लिए संख्या सिद्धांत की अवधारणाओं का उपयोग करना है। तो, यदि किसी संख्या के चार गुणनखंड हैं तो,

  • यदि संख्या एक अभाज्य संख्या का घन है। तब इसके चार अलग-अलग गुणनखंड होंगे। उदाहरण, यदि N = (p³), तो गुणनखंड होंगे 1, p, (p²), N।

  • यदि संख्या दो अलग-अलग अभाज्य संख्याओं का गुणनफल है। तब भी इसके चार अलग-अलग गुणनखंड होंगे। उदाहरण के लिए, यदि N = p1*p2, तो गुणनखंड होंगे 1, p1, p2, N।

C++ प्रोग्राम उदाहरण (कुशल दृष्टिकोण)

#include <bits/stdc++.h>
using namespace std;

int N = 1000;
bool hasFourFactors[1000];

void fourDistinctFactors() {
    bool primeNo[N + 1];
    memset(primeNo, true, sizeof(primeNo));
    for (int i = 2; i <= sqrt(N); i++) {
        if (primeNo[i] == true) {
            for (int j = i * 2; j <= N; j += i)
                primeNo[j] = false;
        }
    }
    vector<int> primes;
    for (int i = 2; i <= N; i++)
        if (primeNo[i])
            primes.push_back(i);
    
    memset(hasFourFactors, false, sizeof(hasFourFactors));
    for (int i = 0; i < primes.size(); ++i) {
        int p1 = primes[i];
        if (1 * (pow(p1, 3)) <= N)
            hasFourFactors[p1 * p1 * p1] = true;
        for (int j = i + 1; j < primes.size(); ++j) {
            int p2 = primes[j];
            if (1 * p1 * p2 > N)
                break;
            hasFourFactors[p1 * p2] = true;
        }
    }
}

int main() {
    int Q = 3;
    int query[] = {3, 6, 15};
    fourDistinctFactors();
    for (int i = 0; i < Q; i++) {
        if (hasFourFactors[query[i]])
            cout << "The number " << query[i] << " has exactly four distinct factors\n";
        else
            cout << "The number " << query[i] << " does not have exactly four distinct factors\n";
    }
    return 0;
}

आउटपुट

The number 3 does not have exactly four distinct factors
The number 6 has exactly four distinct factors
The number 15 has exactly four distinct factors
  1. - C++ में परिमेय संख्याओं का LCM खोजें

    यहां हम देखेंगे कि परिमेय संख्याओं का LCM कैसे निकाला जाता है। हमारे पास परिमेय संख्याओं की एक सूची है। मान लीजिए सूची है {2/7, 3/14, 5/3}, तो LCM 30/1 होगा। इस समस्या को हल करने के लिए, हमें सभी अंशों (numerators) का LCM और सभी हरों (denominators) का GCD निकालना होगा, फिर परिमेय संख्याओं का LCM होग

  1. - C++ में संख्या के सम गुणनखंडों का योग

    समस्या विवरण यह प्रोग्राम किसी संख्या के सभी सम गुणनखंड ढूंढता है और इन सम गुणनखंडों का योग गणना करके आउटपुट के रूप में प्रदर्शित करता है। उदाहरण Input: 30 Even divisors: 2 + 6 + 10 + 30 = 48 Output: 48 दृष्टिकोण इसके लिए, हम सभी गुणनखंड ढूंढेंगे। उनमें से सम गुणनखंड ढूंढेंगे और उनका योग निकालेंग

  1. - C++ में संख्या के सम गुणनखंडों का योग (सरल दृष्टिकोण)

    समस्या विवरण इस खंड में हम देखेंगे कि हम किसी संख्या के सभी सम अभाज्य गुणनखंडों का योग कुशल तरीके से कैसे प्राप्त कर सकते हैं। मान लीजिए एक संख्या n = 480 है, हमें इसके सभी गुणनखंड प्राप्त करने हैं। 480 के अभाज्य गुणनखंड 2, 2, 2, 2, 2, 3, 5 हैं। सभी सम गुणनखंडों का योग 2+2+2+2+2 = 10 है। नियम जब