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

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

इस समस्या को हल करने के लिए, हमें P और S के बीच सभी अभाज्य संख्याएं ढूंढनी होंगी। और फिर उन N अभाज्य संख्याओं को ढूंढना होगा जिनका योग S हो। इसके लिए हम बैकट्रैकिंग (backtracking) का उपयोग करेंगे।

उदाहरण

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;

vector<int> set;
vector<int> primeNo;

bool isPrimeNumber(int x) {
    int sqroot = sqrt(x);
    bool flag = true;
    if (x == 1)
        return false;
    for (int i = 2; i <= sqroot; i++)
        if (x % i == 0)
            return false;
    return true;
}

void printPrimes() {
    int length = set.size();
    for (int i = 0; i < length; i++)
        cout << set[i] << "\t";
    cout << endl;
}

void GeneratePrimeSum(int total, int N, int S, int index) {
    if (total == S && set.size() == N) {
        printPrimes();
        return;
    }
    if (total > S || index == primeNo.size())
        return;
    set.push_back(primeNo[index]);
    GeneratePrimeSum(total + primeNo[index], N, S, index + 1);
    set.pop_back();
    GeneratePrimeSum(total, N, S, index + 1);
}

void PrimesWithSum(int N, int S, int P) {
    for (int i = P + 1; i <= S; i++) {
        if (isPrimeNumber(i))
            primeNo.push_back(i);
    }
    if (primeNo.size() < N)
        return;
    GeneratePrimeSum(0, N, S, 0);
}

int main() {
    int S = 23, N = 3, P = 3;
    cout << N << " अभाज्य संख्याएं जो " << P << " से बड़ी हैं और जिनका योग = " << S << " है:\n";
    PrimesWithSum(N, S, P);
    return 0;
}

आउटपुट

3 अभाज्य संख्याएं जो 3 से बड़ी हैं और जिनका योग = 23 है: 5   7   11
  1. C++ में ऐरे में सभी अभाज्य संख्याओं का गुणनफल C++ में ऐरे में सभी अभाज्य संख्याओं का गुणनफल

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

  1. - C++ में योग शून्य वाले सभी उपसरणी (Subarrays) प्रिंट करें

    इस समस्या में, हमें पूर्णांक मानों की एक सरणी दी गई है और हमें इस सरणी से उन सभी उपसरणी को प्रिंट करना है जिनका योग 0 के बराबर है। विषय को बेहतर ढंग से समझने के लिए एक उदाहरण लेते हैं, इनपुट: सरणी = [-5, 0, 2, 3, -3, 4, -1] आउटपुट: इंडेक्स 1 से 4 तक उपसरणी का योग 0 है। इंडेक्स 5 से 7 तक उपसरणी का यो

  1. - C++ में K नेगेशन के बाद ऐरे योग को अधिकतम करना

    समस्या कथन आकार n का एक ऐरे और एक संख्या k दी गई है। हमें ऐरे को k बार संशोधित करना है। ऐरे संशोधित करने का मतलब है प्रत्येक ऑपरेशन में हम किसी भी ऐरे तत्व arr[i] को उसके नकारात्मक से बदल सकते हैं यानी arr[i] = -arr[i]। कार्य इस ऑपरेशन को इस तरह करना है कि k ऑपरेशन के बाद ऐरे का योग अधिकतम हो। यद