# Perfect number in java – Java Program to Check Perfect Number by Using Recursion

Perfect number in java: In the previous article, we have discussed about Java Program to Print N to 1 by Using Recursion

In this program we are going to see how to check perfect number by using recursion in Java programming language.

## Java Program to Check Perfect Number by Using Recursion

Perfect Number:

Perfect number java: A number in which the sum of the factors of the number excluding itself is equal to the original number is called as perfect number.

Let’s understand it clearly with an example.

Suppose the number say n = 28
Factors of 28 = 1, 2, 4, 7, 14, 28
Sum of the factors of the number excluding itself = 1+2+4+7+14 = 28
Hence, 28 is a perfect number.

Now let’s see different ways to check Perfect number by using recursion.

### Method-1: Java Program to Check Perfect Number By Using Static Input and Recursion

Approach:

• Declare an integer variable say ‘n’ and initialize the value.
• Call a user defined method Perfect() method and pass ‘n’ as parameter.
• Inside the user defined method we will 1st store the original number into a temporary integer variable as “num
• Inside that Perfect() method we will call another sumofFact() method to find the sum of factors of the number.
• Now inside sumofFact() method we will check if the factor i > num/2  then we will return the value as 0 else if the number is divisible by 'i' then we will call sumofFact() method recursively i.e. “i+sumofFact(i+1)” if the number is not divisible by 'i' then we will call sumofFact() method recursively i.e. “sumofFact(i+1)” and return the value to the Perfect() method.
• Now the returned valued call sumofFact() method is stored in an integer variable “value
• If the sum of factors of the number is equal to the original number then print perfect number else print not a perfect number.

Program:

import java.util.*;
import java.io.*;
public class Main
{
static int num;
public static void main(String[] args)
{
// declare and initialize an integer variable ‘n’
int n = 28;
// calling perfect() method with parameter n
perfect(n);
}

//defining perfect() method
static void perfect(int n)
{
// integer num is used to store the original number
num = n;
// calling sumofFact() method to find the sum of factors of the number
int value = sumofFact(1);
// if the sum of factors of the number except that number is equal to the original number then print Perfect number else print not a perfect number
if(value==num)
System.out.println(num+" is a perfect number");
else
System.out.println(num+" is not a perfect number");
}

//defining sumofFact() method
static int sumofFact(int i)
{
// if the factor is greater than half of the number then return 0 else recursively call sumofFact() method and return the value to the perfect() method
if(i > num/2)
return 0;
else if(num %i==0)
return i+sumofFact(i+1);
else
return sumofFact(i+1);
}
}

Output:

28 is a perfect number

### Method-2: Java Program to Check Perfect Number By Using User Input and Recursion

Approach:

• Declare an integer variable say ‘n
• Prompt the user to enter the value of n.
• Call a user defined method Perfect() method and pass ‘n’ as parameter.
• Inside the user defined method we will 1st store the original number into a temporary integer variable as “num
• Inside that Perfect() method we will call another sumofFact() method to find the sum of factors of the number.
• Now inside sumofFact() method we will check if the factor i > num/2  then we will return the value as 0 else if the number is divisible by 'i' then we will call sumofFact() method recursively i.e. “i+sumofFact(i+1)” if the number is not divisible by 'i' then we will call sumofFact() method recursively i.e. “sumofFact(i+1)” and return the value to the Perfect() method.
• Now the returned valued call sumofFact() method is stored in an integer variable “value
• If the sum of factors of the number is equal to the original number then print perfect number else print not a perfect number.

Program:

import java.util.*;
import java.io.*;
public class Main
{
static int num;
public static void main(String[] args)
{
// create a scanner class
Scanner s = new Scanner(System.in);
System.out.println("Enter the number:");
int n = s.nextInt();
// calling perfect() method with parameter n
perfect(n);
}

//defining perfect() method
static void perfect(int n)
{
// integer num is used to store the original number
num = n;
// calling sumofFact() method to find the sum of factors of the number
int value = sumofFact(1);
// if the sum of factors of the number except that number is equal to the original number then print Perfect number else print not a perfect number
if(value==num)
System.out.println(num+" is a perfect number");
else
System.out.println(num+" is not a perfect number");
}

//defining sumofFact() method
static int sumofFact(int i)
{
// if the factor is greater than half of the number then return 0 else recursively call sumofFact() method and return the value to the perfect() method
if(i > num/2)
return 0;
else if(num %i==0)
return i+sumofFact(i+1);
else
return sumofFact(i+1);
}
}

Output:

Enter the number:
78
78 is not a perfect number

Interested in programming and want to excel in it by choosing the short ways. Then, practicing with the available Java Program list is mandatory.

Related Java Programs: