
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Find if Given Number is Sum of First n Natural Numbers in C++
In this problem, we are given a number num. Our task is to find if the given number is the sum of first n natural numbers.
Problem Description: Here, we need to check whether the given number is the sum of first n natural numbers.
Let’s take an example to understand the problem,
Input: num = 55
Output: yes, 10
Explanation:
55 is the sum of the first 10 natural numbers, 1+2+3+4+5+6+7+8+9+10.
Solution Approach:
A simple approach to solving the problem is finding the sum of n natural numbers until it becomes equal to or greater than num.
If the sum is equal to num, return n.
If at any value of n the sum becomes greater than n, return -1.
Program to illustrate the working of our solution,
Example
#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; }
Output −
The value is a sum of first 10 natural numbers
This method is good but we can solve the problem more efficiently using the mathematical formula for the sum of n natural numbers.
Sum of first mutual numbers is given by the formula,
sum = n*(n+1)/ 2
We are given sum and we need to find the value of n,
So we need to create a quadratic equation to find n.
=> 2*Sum = n2 + n
=> n2 + n - 2*sum = 0 , quadratic equation
The solution of this quadratic equation is,
Program to illustrate the working of our solution,
Example
#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; }
Output
The value is a sum of first 10 natural numbers