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

C++ में जांचें कि दी गई संख्या पहले n प्राकृतिक संख्याओं का योग है या नहीं


इस समस्या में, हमें एक संख्या num दी गई है। हमारा कार्य जांचना है कि दी गई संख्या पहले n प्राकृतिक संख्याओं का योग है या नहीं।

समस्या विवरण: यहां, हमें जांचना है कि दी गई संख्या पहले n प्राकृतिक संख्याओं का योग है या नहीं।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

इनपुट: num = 55

आउटपुट: yes, 10

व्याख्या:

55 पहले 10 प्राकृतिक संख्याओं का योग है, 1+2+3+4+5+6+7+8+9+10।

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

समस्या को हल करने का एक सरल दृष्टिकोण n प्राकृतिक संख्याओं का योग तब तक ढूंढना है जब तक यह num के बराबर या अधिक न हो जाए।

यदि योग num के बराबर है, तो n वापस करें।

यदि n के किसी मान पर योग n से अधिक हो जाता है, तो -1 वापस करें।

हमारे समाधान की कार्यप्रणाली को दर्शाने वाला प्रोग्राम,

उदाहरण

#include <iostream>
using namespace std;

int isNatSum(int num){
    int sum = 0;
    for (int n = 1; sum < num; n++) {
        sum += n;
        if (sum == num)
            return n;
    }
    return -1;
}

int main(){
    int num = 55;
    int n = isNatSum(num);
    if(n == -1)
        cout<<"The value is not sum of natural numbers";
    else
        cout<<"The value is a sum of first "<<n<<" natural numbers";
    return 0;
}

आउटपुट

The value is a sum of first 10 natural numbers

यह विधि अच्छी है लेकिन हम द्विघात समीकरण का उपयोग करके समस्या को अधिक कुशलता से हल कर सकते हैं।

पहली पारस्परिक संख्याओं का योग सूत्र द्वारा दिया जाता है,

sum = n*(n+1)/ 2

हमें योग दिया गया है और हमें n का मान ढूंढना है,

इसलिए हमें n ढूंढने के लिए एक द्विघात समीकरण बनाना होगा।

=> 2*Sum = n2 + n

=> n2 + n - 2*sum = 0, द्विघात समीकरण

इस द्विघात समीकरण का हल है,

हमारे समाधान की कार्यप्रणाली को दर्शाने वाला प्रोग्राम,

उदाहरण

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

int isNatSum(int num){
    int n = ( -1+ sqrt (1 + (8*num) ))/2;
    if(ceil(n)==floor(n)){
        return n;
    }
    return -1;
}

int main(){
    int num = 55;
    int n = isNatSum(num);
    if(n == -1)
        cout<<"The value is not sum of natural numbers";
    else
        cout<<"The value is a sum of first "<<n<<" natural numbers";
    return 0;
}

आउटपुट

The value is a sum of first 10 natural numbers

  1. - C++ प्रोग्राम: पहले n प्राकृतिक संख्याओं के घन का योग

    धनात्मक पूर्णांक 1, 2, 3, 4... को प्राकृतिक संख्या के रूप में जाना जाता है। यह प्रोग्राम उपयोगकर्ता से एक धनात्मक पूर्णांक लेता है (मान लीजिए उपयोगकर्ता ने n दर्ज किया) फिर, यह प्रोग्राम 1³+2³+3³+....+n³ का मान प्रदर्शित करता है। Input: n = 3 Output: 36 व्याख्या 1³+2³+3³ = 1 +8+27 = 36 यह प्रोग्राम

  1. C++ में पहले n प्राकृतिक संख्याओं के वर्गों का योग C++ में पहले n प्राकृतिक संख्याओं के वर्गों का योग

    इस समस्या में हम देखेंगे कि पहले n प्राकृतिक संख्याओं के वर्गों का योग कैसे प्राप्त किया जा सकता है। यहां हम एक फॉर लूप का उपयोग कर रहे हैं, जो 1 से n तक चलता है। प्रत्येक चरण में हम पद का वर्ग निकाल रहे हैं और फिर इसे योग में जोड़ रहे हैं। यह प्रोग्राम पूरा होने में O(n) समय लेता है। लेकिन यदि हम

  1. - C++ में रिकर्सन का उपयोग करके प्राकृतिक संख्याओं का योग खोजने का प्रोग्राम

    प्राकृतिक संख्याएँ 1 से शुरू होने वाले धनात्मक पूर्णांक हैं। प्राकृतिक संख्याओं का क्रम निम्नलिखित है: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10... पहली n प्राकृतिक संख्याओं का योग रिकर्सन का उपयोग करके खोजने का प्रोग्राम निम्नलिखित है। उदाहरण #include <iostream> using namespace std; int sum(int n) { &nbs