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

N को 0 तक कम करने के लिए आवश्यक संक्रियाओं की गणना (सबसे छोटे अभाज्य भाजक घटाना) - C++

समस्या विवरण

हमें एक धनात्मक पूर्णांक N दिया गया है। लक्ष्य N को 0 तक कम करने के लिए आवश्यक संक्रियाओं की संख्या ज्ञात करना है। संक्रिया: N = N - P जहाँ P वर्तमान N का सबसे छोटा अभाज्य भाजक है।

उदाहरण

इनपुट: N = 17

आउटपुट: 1

व्याख्या: 17 का सबसे छोटा अभाज्य भाजक 17 है। 17-17=0, एक संक्रिया।

इनपुट: N = 20

आउटपुट: 10

व्याख्या: सबसे छोटा अभाज्य भाजक 2 है। 2 को बार-बार घटाने पर: 20→18→16→...→2→0 (10 बार)।

दृष्टिकोण

सभी सम संख्याओं के लिए सबसे छोटा अभाज्य भाजक 2 होता है। विषम संख्याओं के लिए, सबसे छोटा अभाज्य भाजक विषम होता है; घटाने के बाद संख्या सम हो जाती है, फिर 2 बार-बार घटाया जाता है।

i=2 से शुरू करके सबसे छोटा भाजक खोजें। यदि i*i > N तो i = N (N अभाज्य है)। कुल संक्रियाएँ = 1 + (N - i)/2।

एल्गोरिदम

  1. प्रारंभिक i = 2
  2. while (i*i < N && N%i != 0) i++
  3. यदि i*i > N तो i = N
  4. count = 1 + (N - i)/2
  5. count लौटाएँ

C++ कार्यान्वयन

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

int N_to_Zero(int N) {
    int i = 2;
    while ((i * i) < N && (N % i)) i++;
    if ((i * i) > N) i = N;
    return 1 + (N - i) / 2;
}

int main() {
    int N = 10;
    cout << "Count: " << N_to_Zero(N);
    return 0;
}

आउटपुट

Count: 5
  1. C++ में दिए गए ट्री में उन नोड्स को गिनना जिनका वजन दो की घात है C++ में दिए गए ट्री में उन नोड्स को गिनना जिनका वजन दो की घात है

    नोड्स के वजन वाली एक बाइनरी ट्री दी गई है। लक्ष्य उन नोड्स की संख्या ढूंढना है जिनके वजन ऐसे हैं कि संख्या दो की घात है। यदि वजन 32 है तो यह 2⁵ है इसलिए यह नोड गिना जाएगा। उदाहरण के लिए इनपुट मानों को इनपुट करने के बाद जो ट्री बनेगा वह नीचे दिया गया है: आउटपुट Count the nodes in the given tree whos

  1. ग्रिड में दी गई दिशा में संभावित चालों की गणना करने का C++ प्रोग्राम ग्रिड में दी गई दिशा में संभावित चालों की गणना करने का C++ प्रोग्राम

    समस्या विवरण हमें n x m आकार का ग्रिड और प्रारंभिक बिंदु (x, y) दिया गया है। साथ ही चालों/कदमों के जोड़े दिए गए हैं जैसे (1,1), (2,2) आदि। प्रत्येक जोड़ा x और y अक्ष में कदम की इकाइयों को दर्शाता है। लक्ष्य ग्रिड की सीमाओं [1,n] x [1,m] के भीतर ली जा सकने वाली कुल चालों की संख्या ज्ञात करना है। उदा

  1. - C++ प्रोग्राम: दिए गए इटरेटर का प्रकार ढूंढना

    एक इटरेटर एक पॉइंटर की तरह एक ऑब्जेक्ट है जिसका उपयोग कंटेनर के तत्वों पर पुनरावृति करने के लिए किया जाता है। इटरेटर का उपयोग करने का मुख्य लाभ एक सामान्य इंटरफेस बनाना और एल्गोरिदम को कंटेनर के प्रकार से प्रतिरक्षित बनाना है जिसका उपयोग इसे लागू करने के लिए किया जाता है। C++ मानक लाइब्रेरी में इटरे