C++ Program to check whether a number is an Abundant Number or not
Abundant Number in C++
We will learn different ways of Abundant Number in C++
Abundant number is an number in which the sum of the proper divisors of the number is greater than the number itself.
Ex:- Abundant number 12 having a proper divisor is 1, 2, 3, 4, 6 The sum of these factors is 16 it is greater than 12 So it is an Abundant number Some other abundant numbers: 18, 20, 30, 70, 78, 80, 84, 90, 96, 100, 104, 108, 120
Methods
- Finding divisors by traversal between [1, num-1]
- Finding divisors by traversal between [1, √num-1]
Method 1
C++ Code:-
Run
#include <iostream> using namespace std; int main () { int n = 12, sum = 0; for(int i = 1; i < n; i++) { if(n % i == 0) sum = sum + i; } if(sum > n){ cout << n << " is an Abundant Number\n"; cout << "The Abundance is: " << (sum-n); } else cout << n << " is not an Abundant Number\n"; } // Time complexity: O(N) // Space complexity: O(1)
Output
12 is an Abundant Number
The Abundance is: 4
Method 2
All Factors come in pairs
For n = a * b (For each a there exists a unique b)
Example : 100 (1,100), (2, 50), (4, 25), (5, 20), (10, 100)
Example : 100 (1,100), (2, 50), (4, 25), (5, 20), (10, 100)
Shorten the loop
We can shorten the loop running between [1, num] to [1, √num]
Since we will find all pairs before √num (n = sqrt(n) * sqrt(n))
Since we will find all pairs before √num (n = sqrt(n) * sqrt(n))
C++ Code:-
Run
#include <iostream> #include <math.h> using namespace std; int getSum(int n){ int sum = 0; for(int i = 1; i < sqrt(n); i++) { if (n % i == 0) { // For n : (1, n) will always be pair of divisor // acc to def., we must ignore adding n itself as divisor // when calculating for abundant number if(i == 1) sum = sum + i; // Example For 100 (10,10) will be one of the pair // But, we should add value 10 to the sum just once else if(i == n/i) sum = sum + i; // add both pairs as divisors // For any divisor i, n/i will also be a divisor else sum = sum + i + n/i; } } return sum; } int main() { int n = 12; int sum = getSum(n); if(sum > n) { cout << n << " is an Abundant Number\n"; cout << "The Abundance is: " << (sum-n); } else cout << n << " is not an Abundant Number\n"; } // Time Complexity: O(√N) // Space Complexity: O(1)
Output
12 is an Abundant Number
The Abundance is: 4
Prime Course Trailer
Related Banners
Get PrepInsta Prime & get Access to all 200+ courses offered by PrepInsta in One Subscription
- Positive or Negative number: C | C++ | Java | Python
- Even or Odd number: C | C++ | Java | Python
- Sum of First N Natural numbers: C | C++ | Java | Python
- Sum of N natural numbers: C | C++ | Java | Python
- Sum of numbers in a given range: C | C++ | Java | Python
- Greatest of two numbers: C | C++ | Java | Python
- Greatest of the Three numbers: C | C++ | Java | Python
- Leap year or not: C | C++ | Java | Python
- Prime number: C | C++ | Java | Python
- Prime number within a given range: C | C++ | Java | Python
- Sum of digits of a number: C | C++ | Java | Python
- Reverse of a number : C | C++ | Java | Python
- Palindrome number: C | C++ | Java | Python
- Armstrong number : C | C++ | Java | Python
- Armstrong number in a given range : C | C++ | Java | Python
- Fibonacci Series upto nth term : C | C++ | Java | Python
- Find the Nth Term of the Fibonacci Series : C | C++ | Java | Python
- Factorial of a number : C | C++ | Java | Python
- Power of a number : C | C++ | Java | Python
- Factor of a number : C | C++ | Java | Python
- Strong number : C | C++ | Java | Python
- Perfect number : C | C++ | Java | Python
- Automorphic number : C | C++ | Java | Python
- Harshad number : C | C++ | Java | Python
- Abundant number : C| C++ | Java | Python
- Friendly pair : C | C++ | Java | Python
Login/Signup to comment