# Perfect Number Program in Java with Examples

In this tutorial, I will be sharing what is Perfect number, examples of Perfect number, algorithm, and java program to check whether a given number is Perfect number or not.

Read Also : Java Program to Check Duck Number

## What is Perfect Number

Perfect number is a positive integer(number more than zero) that is equal to the sum of its proper positive divisors(or factors) excluding the number itself.
Examples :

`Number to check : 28 `
`28 is divisible by 1,2,4,7,14 (Remember to exclude number itself i.e 28)`
`1 + 2 + 4 + 7 + 14 = 28 (sum of positive divisors is equal to given number 28)`

`                        // 28 is a Perfect number`
` `
`Number to check : 6`
`6 is divisible by 1,2,3 (Remember to exclude number itself i.e 6)`
```1 + 2 + 3 = 6           (sum of positive divisors is equal to given number 6)
// 6 is a Perfect number
```
`Number to check : 496 `
`496 is divisible by 1,2,4,8,16,31,62,124,248 (Remember to exclude number itself i.e 496)`
`1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248 = 496 (sum of positive divisors is equal to given number 496)`
`                        // 496 is a Perfect number`
` `

Below are examples of numbers which are NOT Perfect numbers

`Number to check : 16 `
`16 is divisible by 1,2,4,8 (Remember to exclude number itself i.e 16)`
`1 + 2 + 4 + 8 = 15      (sum of positive divisors is NOT equal to given number 16)`
`                        // 16 is NOT a Perfect number`
` `
`Number to check : 27 `

`27 is divisible by 1,3,9 (Remember to exclude number itself i.e 27)`
`1 + 3 + 9 = 13          (sum of positive divisors is NOT equal to given number 27)`
`                        // 27 is NOT a Perfect number`

List of Perfect Numbers between 1 and 10000 are : 6, 28, 496, 8128

## Java Program for Perfect Number using For loop

```import java.util.Scanner;

public class JavaHungry {
public static void main(String args[])
{
Scanner scan = new Scanner(System.in);
System.out.println("Enter any number : ");
int inputNumber = scan.nextInt();
boolean result = isPerfectNumber(inputNumber);
if (result == true)
System.out.println(inputNumber + " is a Perfect Number");
else
System.out.println(inputNumber + " is Not a Perfect Number");
}

public static boolean isPerfectNumber(int num)
{```
`      /* Initialize sum variable indicating`
` `
`         sum of divisors(factors) of inputNumber*/ `
```      int sum = 0;
for (int i=1;i < num;i++)
{```
```          if ( num % i == 0)
{
sum = sum + i;
}
}```
```      /* If sum variable is equal to inputNumber
then the number is Perfect Number
,otherwise not */
```
```      return (sum == num);
}
}
```

Output :

Enter any number : 1000
1000 is Not a Perfect Number

## Java Program for Perfect Number using While loop

```import java.util.Scanner;

public class JavaHungry {
public static void main(String args[])
{
Scanner scan = new Scanner(System.in);
System.out.println("Enter any number : ");
int inputNumber = scan.nextInt();
boolean result = isPerfectNumber(inputNumber);
if (result == true)
System.out.println(inputNumber + " is a Perfect Number");
else
System.out.println(inputNumber + " is Not a Perfect Number");
}

public static boolean isPerfectNumber(int num)
{```
```      /* Initialize sum variable indicating
sum of divisors(factors) of inputNumber*/
int sum = 0;
int i=1;
while(i < num)
{
if ( num % i == 0)
{
sum = sum + i;
}
i++;
}```
```      /* If sum variable is equal to inputNumber
then the number is Perfect Number
,otherwise not */

return (sum == num);
}
}
```

Output :

Enter any number : 1000
1000 is Not a Perfect Number

## Java Program for finding Perfect Number between 1 to 1000

Below java program allows the user to enter range i.e minimum and maximum value. It will find the perfect number between the minimum and maximum values.

```import java.util.Scanner;

public class JavaHungry {
public static void main(String args[])
{
Scanner scan = new Scanner(System.in);
System.out.println("Enter minimum number : ");
int min = scan.nextInt();
System.out.println("Enter maximum number : ");
int max = scan.nextInt();
isPerfectNumber(min,max);
}
public static void isPerfectNumber(int min, int max)
{
int num = 0;
for(num=min;num <= max;num++)
{
int sum =0;
for (int i=1;i < num;i++)
{
if ( num % i == 0)
{
sum = sum + i;
}
}
if (sum == num)
{
System.out.println(num + " is a Perfect Number");
}
}
}
}
```

Output :
Enter minimum number : 1
Enter maximum number : 1000
6 is a Perfect Number
28 is a Perfect Number
496 is a Perfect Number

## Algorithm for Perfect Number

1. Initialize the sum variable value to 0. It will represent the sum of divisors(factors) of a given inputNumber.

2. Using for/while loop
a. Check if num(inputNumber) is divisible by i by using (num%i).
b. If (num%i == 0), it indicates that i is a factor(divisor) of num(inputNumber).
c. Add the value of i to the sum variable.
d. Continue till i is less than num(inputNumber).

3. Check whether the variable sum is equal to the num(inputNumber).
a. If both are equal then the inputNumber is a Perfect number.
b. Otherwise, the inputNumber is not a Perfect number.

Please mention in comments if you know any other way of implementing Perfect number program in java.

References:
Wikipedia