Check if a number is super perfect or not in Java

In this tutorial, you will learn about what is super-perfect number and the implementation in Java. But before that, you must know what is a super-perfect number.

What is a Super-perfect Number?

Super-perfect numbers are those number that satisfies the condition f2(n) = f(f(n)) = 2n, where f is a function that signifies the sum of all divisors of a number.

Java code to check if a number is super-perfect or not in Java

The following code can be used here to check it.

Step 1: First we will calculate the function f

      package javaapplication15;
public class JavaApplication15 
{
    public static void main(String[] args)
    {
        int n = 16; int i,j,sum=1,sum1=1; 
        System.out.print("f(n) = "+sum); 
        for(i=2;i<=16;i++) 
        { 
            if(n%i==0) 
        {
            System.out.print(" + "+i); sum = sum+i; 
        } 
        }
        System.out.println(" = " +sum);

Step 2: Then we will calculate f(f(n))

System.out.print("f(f(n)) = "+sum1);
        for(i=2;i<=sum;i++)
        { 
            if(sum%i==0)
        { 
            System.out.print(" + "+i);
        sum1 = sum1+i; 
        } 
        } 
        System.out.println(" = " +sum1);

Step3: Now calculate 2*n

System.out.println("2 * n = "+2*n);

Step 4: Now check the condition if f(f(n)) = 2*n

if(n*2==sum1)
            System.out.println("Since f(f(n)) = 2*n therfore, the number is a superperfect number");
        else System.out.println("Since f(f(n)) != 2*n therfore the number is not a superfect number");
    } 
}

Output:-

f(n) = 1 + 2 + 4 + 8 + 16 = 31
f(f(n)) = 1 + 31 = 32
2 * n = 32
Since f(f(n)) = 2*n therfore, the number is a superperfect number

Also read: Java program to check if a number is a Carmichael number

Leave a Reply

Your email address will not be published. Required fields are marked *