Skip to content
Related Articles

Related Articles

Check if a number is Triperfect Number
  • Last Updated : 24 Dec, 2018

Given a number N. The tasks is to check if the given number is a Triperfect Number.

Triperfect Number: A Number is a Triperfect Number if it is equal to three times the sum of its divisors, that is, 3 times sum of its positive divisors.

Examples:

Input: N = 15
Output: false
Divisors of 15 are 1, 3, 5 and 15. Sum of 
divisors is 24 which is not equal to 3*15 i.e. 45.

Input: N = 120
Output: true
Sum of divisors is 360 i.e. 3*120.
Hence 120 is a triperfect number.

A Simple Solution is to go through every number from 1 to N and check if it is a divisor. Maintain sum of all divisors. If sum becomes equal to 3*N, then return true, else return false.

An Efficient Solution is to go through numbers till square root of N. If a number ‘i’ divides n, then add both ‘i’ and n/i to sum.



Below is the implementation of the efficient approach:

C++




// CPP code to check if a given 
// number is Triperfect or not 
#include<bits/stdc++.h>
using namespace std;
  
// Returns true if n is Triperfect 
bool isTriPerfect(int n )
{
    // To store sum of divisors. 
    // Adding 1 and n since they are divisors of n.
    int sum = 1 + n;
      
    // Find all divisors and add them 
    int i = 2;
    while (i * i <= n)
    {
    if (n % i == 0)
        
            if (n / i == i)
                sum = sum + i;
            else
                sum = sum + i + n / i;
        }
        i += 1;
    }
      
    // If sum of divisors is equal to 
    // 3 * n, then n is a Triperfect number 
    if (sum == 3 * n and n != 1)
       return true;
    else
       false;
}
  
// Driver program 
int main()
{
 int n = 120;
  
 if (isTriPerfect(n)) 
    cout<<n<<" is a Triperfect number";    
}
  
//This code is contributed by 
// Surendra_Gangwar


Java




// Java code to check if a given 
// number is Triperfect or not 
  
public class GFG{
      
    // Returns true if n is Triperfect 
    static boolean isTriPerfect(int n ) 
    
        // To store sum of divisors. 
        // Adding 1 and n since they are divisors of n. 
        int sum = 1 + n; 
          
        // Find all divisors and add them 
        int i = 2
        while (i * i <= n) 
        
        if (n % i == 0
            
                if (n / i == i) 
                    sum = sum + i; 
                else
                    sum = sum + i + n / i; 
            
            i += 1
        
          
        // If sum of divisors is equal to 
        // 3 * n, then n is a Triperfect number 
        if (sum == 3 * n & n != 1
            return true
        else
            return  false
    
      
    // Driver program 
    public static void main(String []args)
    
    int n = 120
      
    if (isTriPerfect(n)) 
        System.out.println(n + " is a Triperfect number");     
    
      
    //This code is contributed by 
    // Ryuga
}


Python3




# Python3 code to check if a given 
# number is Triperfect or not 
  
# Returns true if n is Triperfect 
def isTriPerfect( n ): 
      
    # To store sum of divisors. 
    # Adding 1 and n since they are divisors of n.
    sum = 1 + n
      
    # Find all divisors and add them 
    i = 2
    while i * i <= n: 
        if n % i == 0
            if n / i == i:
                sum = sum + i
            else:
                sum = sum + i + n /
        i += 1
      
    # If sum of divisors is equal to 
    # 3 * n, then n is a Triperfect number 
    return (True if sum == 3 * n and n != 1 else False
  
# Driver program 
n = 120
  
if isTriPerfect (n): 
    print(n, "is a Triperfect number"
            


C#




// C# code to check if a given 
// number is Triperfect or not 
using System;
public class GFG{
      
    // Returns true if n is Triperfect 
    static bool isTriPerfect(int n ) 
    
        // To store sum of divisors. 
        // Adding 1 and n since they are divisors of n. 
        int sum = 1 + n; 
          
        // Find all divisors and add them 
        int i = 2; 
        while (i * i <= n) 
        
        if (n % i == 0) 
            
                if (n / i == i) 
                    sum = sum + i; 
                else
                    sum = sum + i + n / i; 
            
            i += 1; 
        
          
        // If sum of divisors is equal to 
        // 3 * n, then n is a Triperfect number 
        if (sum == 3 * n & n != 1) 
            return true
        else
            return false
    
      
    // Driver program 
    public static void Main()
    
    int n = 120; 
      
    if (isTriPerfect(n)) 
        Console.WriteLine(n + " is a Triperfect number");     
    
      
    //This code is contributed by 
    // Mukul Singh
}


PHP




<?PHP
// PHP code to check if a given 
// number is Triperfect or not 
  
// Returns true if n is Triperfect 
function isTriPerfect($n )
{
    // To store sum of divisors. 
    // Adding 1 and n since they 
    // are divisors of n.
    $sum = 1 + $n;
      
    // Find all divisors and add them 
    $i = 2;
    while ($i * $i <= $n)
    {
        if ($n % $i == 0)
        
            if ($n / $i == $i)
                $sum = $sum + $i;
            else
                $sum = $sum + $i + $n / $i;
        }
        $i += 1;
    }
      
    // If sum of divisors is equal to 
    // 3 * n, then n is a Triperfect number 
    if ($sum == 3 * $n and $n != 1)
        return true;
    else
        false;
}
  
// Driver Code 
$n = 120;
  
if (isTriPerfect($n)) 
    echo $n . " is a Triperfect number";
else
    echo $n . " is not a Triperfect number";
  
// This code is contributed by mits
?>


Output:

120 is a Triperfect number

Some interesting facts about TriPerfect Numbers:

  • Till now only 6 Triperfect numbers are known. These are 120, 672, 523776, 459818240, 1476304896 and 51001180160.
  • It has not been proven that more Triperfect Numbers don’t exist but it is believed that these are the only six.

Similarly, we can check for quad-perfect numbers(sum of factors = 4*n), five-perfect numbers( sum of factors = 5*n) and so on. There are currently 36 quad-perfect numbers known and 65 five-perfect numbers known.

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up
Recommended Articles
Page :