w3resource

C++ Exercises: Check two numbers are Amicable numbers or not

C++ Numbers: Exercise-28 with Solution

Write a C++ program to check two numbers are Amicable numbers or not.

Sample Solution:

C++ Code :

#include <bits/stdc++.h> // Include all standard C++ libraries

using namespace std; // Using the standard namespace

int ProDivSum(int n) // Function to calculate the sum of proper divisors of a number 'n'
{
    int sum = 1; // Initialize sum with 1 (as 1 is a divisor for all numbers)
    for (int i = 2; i <= sqrt(n); i++) // Loop through numbers from 2 to square root of 'n'
    {
        if (n % i == 0) // Check if 'i' is a divisor of 'n'
        {
            sum += i; // Add 'i' to the sum

            // If 'n' is divisible by 'i' but not equal to 'i', add the corresponding divisor to the sum
            if (n / i != i)
                sum += n / i;
        }
    }
    return sum; // Return the sum of proper divisors
}

bool chkAmicable(int a, int b) // Function to check if two numbers 'a' and 'b' are amicable pairs
{
    return (ProDivSum(a) == b && ProDivSum(b) == a); // Return true if the sum of proper divisors of 'a' equals 'b' and vice versa
}

int main()
{
    int n, i, j, ctr, nm1, nm2; // Declare integer variables
    cout << "\n\n Check whether two numbers are Amicable pairs or not: \n"; // Display a message
    cout << "\n Sample: (220, 284), (1184, 1210), (2620, 2924).. \n";
    cout << " --------------------------------------------------------\n";
    cout << " Input the 1st number : ";
    cin >> nm1; // Input the first number
    cout << " Input the 2nd number : ";
    cin >> nm2; // Input the second number

    if (chkAmicable(nm1, nm2)) // Check if the input numbers are amicable pairs
        cout << " The given numbers are an Amicable pair." << endl; // Display if they are amicable pairs
    else
        cout << " The given numbers are not an Amicable pair." << endl; // Display if they are not amicable pairs

    return 0; // Exit the program
}

Sample Output:

Check whether two numbers are Amicable pairs or not:                  
                                                                       
 Sample: (220, 284), (1184, 1210), (2620, 2924)..                      
 --------------------------------------------------------              
 Input the 1st number : 220                                            
 Input the 2nd number : 284                                            
 The given numbers are an Amicable pair.

Flowchart:

Flowchart: Check two numbers are Amicable numbers or not
Flowchart: Check two numbers are Amicable numbers or not

C++ Code Editor:

Contribute your code and comments through Disqus.

Previous: Write a program in C++ to find Duck Numbers between 1 to 500.
Next: Write a program in C++ to count the Amicable pairs in an array.

What is the difficulty level of this exercise?



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://www.w3resource.com/cpp-exercises/numbers/cpp-numbers-exercise-28.php