Check if sum of divisors of two numbers are same

Given two numbers n1 & n2, We need to check whether these numbers are equivalent numbers or not.Â
Equivalent numbers are numbers such that the sums of their proper divisors are the same.Â
For example, 159, 559, and 703 are equivalent numbers. This is because all three numbers have 57 as the sum of their proper divisors.Â
Examples :Â Â
Input : n1 = 559, n2 = 703Â
Output : Yes.Â
Explanation: Both numbers have 57 as a sum of their proper divisors.Â
 Â
Input : n1 = 36, n2 = 57Â
Output : No.Â
Explanation: 36 has sum 55 while 57 has sum 23 of their proper divisors.Â
Find the sum of proper divisors as implemented in for Perfect number for the given numbers and then will check if both sums are equal or not.Â
Â
C++
// C++ program to find if two numbers are// equivalent or not#include <bits/stdc++.h>using namespace std;Â
// Function to calculate sum of all proper divisors// num --> given natural numberint divSum(int n){    // To store sum of divisors    long long int sum = 1;Â
    // Find all divisors and add them    for (long long int i = 2; i * i <= n; i++)        if (n % i == 0)            sum = sum + i + n / i;Â
    return sum;}Â
// Function to check if both numbers// are equivalent or notbool areEquivalent(int num1, int num2){Â Â Â Â return divSum(num1) == divSum(num2);}Â
// Drivers codeint main(){Â Â Â Â int num1 = 559, num2 = 703;Â
    areEquivalent(num1, num2) ?                   cout << "Equivalent" :                   cout << "Not Equivalent";Â
    return 0;} |
Java
// Java program to find if two numbers are// equivalent or notimport java.math.*;Â
class GFG {Â
    // Function to calculate sum of all proper    // divisors num --> given natural number    static int divSum(int n)    {        // To store sum of divisors        int sum = 1;Â
        // Find all divisors and add them        for (int i = 2; i * i <= n; i++)            if (n % i == 0)                sum = sum + i + n / i;Â
        return sum;    }Â
    // Function to check if both numbers    // are equivalent or not    static boolean areEquivalent(int num1, int num2)    {Â
        return divSum(num1) == divSum(num2);    }Â
    // Drivers code    public static void main(String[] args)    {        int num1 = 559;        int num2 = 703;Â
        if (areEquivalent(num1, num2))            System.out.println("Equivalent");        else            System.out.println("Not Equivalent");    }} |
Python3
# Python3 program to find # if two numbers are# equivalent or notimport mathÂ
# Function to calculate sum # of all proper divisors# num --> given natural numberdef divSum(n):         # To store sum of divisors    sum = 1;Â
    # Find all divisors    # and add them    i = 2;    while(i * i <= n):        if (n % i == 0):            sum = (sum + i +                   math.floor(n / i));        i += 1;Â
    return sum;Â
# Function to check # if both numbers# are equivalent or notdef areEquivalent(num1, num2):Â Â Â Â return divSum(num1) == divSum(num2);Â
# Driver codenum1 = 559; num2 = 703;Â
if (areEquivalent(num1, num2) == True):Â Â Â Â print("Equivalent");else:Â Â Â Â print("Not Equivalent");Â Â Â Â Â Â Â Â Â Â Â Â Â # This code is contributed by mits |
C#
// C# program to find if two // numbers are equivalent or notusing System;Â
class GFG{         // Function to calculate sum     // of all proper divisors     // num --> given natural number    static int divSum(int n)    {        // To store sum of divisors        int sum = 1;Â
        // Find all divisors        // and add them        for (int i = 2; i * i <= n; i++)            if (n % i == 0)                sum = sum + i + n / i;Â
        return sum;    }Â
    // Function to check if     // both numbers are     // equivalent or not    static bool areEquivalent(int num1,                               int num2)    {        return divSum(num1) == divSum(num2);    }Â
    // Driver code    static public void Main ()    {        int num1 = 559;        int num2 = 703;Â
        if (areEquivalent(num1, num2))            Console.WriteLine("Equivalent");        else            Console.WriteLine("Not Equivalent");    }}Â
// This code is contributed by m_kit |
PHP
<?php// PHP program to find // if two numbers are// equivalent or notÂ
// Function to calculate sum // of all proper divisors// num --> given natural numberfunction divSum($n){    // To store sum of divisors    $sum = 1;Â
    // Find all divisors    // and add them    for ($i = 2; $i * $i <= $n; $i++)        if ($n % $i == 0)            $sum = $sum + $i +                    floor($n / $i);Â
    return $sum;}Â
// Function to check // if both numbers// are equivalent or notfunction areEquivalent($num1, $num2){Â Â Â Â return divSum($num1) == divSum($num2);}Â
// Driver code$num1 = 559; $num2 = 703;Â
if (areEquivalent($num1, $num2) == true)     echo "Equivalent" ;             else    echo "Not Equivalent";             // This code is contributed by ajit?> |
Javascript
<script>    // Javascript program to find if two     // numbers are equivalent or not         // Function to calculate sum     // of all proper divisors     // num --> given natural number    function divSum(n)    {        // To store sum of divisors        let sum = 1;           // Find all divisors        // and add them        for (let i = 2; i * i <= n; i++)            if (n % i == 0)                sum = sum + i + parseInt(n / i, 10);           return sum;    }       // Function to check if     // both numbers are     // equivalent or not    function areEquivalent(num1, num2)    {        return divSum(num1) == divSum(num2);    }         let num1 = 559;    let num2 = 703;Â
    if (areEquivalent(num1, num2))      document.write("Equivalent");    else      document.write("Not Equivalent");Â
</script> |
Equivalent
Â
Time complexity : O(sqrt(n)).
Auxiliary space complexity : O(1).
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!



