Programs

# Perfect Number Program for Java

## What is a Perfect Number?

A number is said to be perfect if it is equal to its proper divisors’ sum. Thus, the sum of all positive divisors is equivalent to a number itself for a perfect number. The sum of the divisors of any number, while not including the number itself, is called its aliquot sum.  Hence, each perfect number is equivalent to its aliquot sum.

A perfect number is that number equal to half of all its positive divisors’ sum, including itself. Euclid has termed a perfect number as a perfect, ideal, or complete number. The first few perfect numbers include 6, 28, 496, and 8128.

Example1: 6

Positive factors are; 1,2,3,6

Here, the sum of all the aspects excluding the number itself is equal to 6.

Example2: 28

Positive factors are; 1, 2,4,7,14,28

Another time the sum of all the issues, not including the number itself, comes out to be 28.

Now that you are clear with the meaning of a perfect number let us move headed for the next segment.

Check out our free technology courses to get an edge over the competition.

## Explore our Popular Software Engineering Courses

 Master of Science in Computer Science from LJMU & IIITB Caltech CTME Cybersecurity Certificate Program Full Stack Development Bootcamp PG Program in Blockchain Executive PG Program in Full Stack Development View All our Courses Below Software Engineering Courses

### Perfect Number in Java:

Let us understand it with the help of a function’s example. The following is the function for a perfect number.

Function to Check if the input Number is Perfect Number or Not: Source

## Types of Solution:Perfect Number in Java

The two leading solutions for finding a perfect number in java are:

• ### Simple Solution

It involves going through every number from 1 to n-1 while checking if it is a divisor. The sum of all divisors is maintained throughout the process. Once the sum of all divisors is equal to n, the solution then returns to true. The answer returns to false in an otherwise situation.

• ### Efficient Solution

It involves going through every number until the square root of n is reached. Look for any number “i” that divides n.  The next step is to add both “i” and n/i to the sum.

Learn Software Development Courses online from the World’s top Universities. Earn Executive PG Programs, Advanced Certificate Programs or Masters Programs to fast-track your career.

## In-Demand Software Development Skills

 JavaScript Courses Core Java Courses Data Structures Courses Node.js Courses SQL Courses Full stack development Courses NFT Courses DevOps Courses Big Data Courses React.js Courses Cyber Security Courses Cloud Computing Courses Database Design Courses Python Courses Cryptocurrency Courses

### Implementation of the Efficient Solution:

Input: Source

Output: Source

Approaches to Find a Perfect Number in Java

There are two main approaches to find a perfect number in java. These are:

• Iterative Approach

Input: Source

Output: Source

An iterative approach, “while loop,” is used to find divisors of the number and then get the sum of the divisors. The steps for adopting an iterative approach are:

• Sum = 0 and loop variable “i= 1”are initialized.
• A “while loop” condition is iterated until “i&It;=number/2” is false.
• The remainder of “number%i” is checked using the modulo operator. If the remainder is 0, then add it to the sum.
• If the sum is equal to the number after all iterations, then it is a perfect number.

## Read our Popular Articles related to Software Development

 How to Implement Data Abstraction in Java? What is Inner Class in Java? Java Identifiers: Definition, Syntax, and Examples Understanding Encapsulation in OOPS with Examples Command Line Arguments in C Explained Top 10 Features & Characteristics of Cloud Computing in 2022 Polymorphism in Java: Concepts, Types, Characterisitics & Examples Packages in Java & How to Use Them? Git Tutorial For Beginners: Learn Git from Scratch

• ### Recursive Approach

Input: Source

Output: Source

This approach reduces the code statements as it doesn’t use “while loop.” The steps for adopting the recursive approach are:

• Static variable is initialized, i.e., sum = 0.
• A function findPerfect () is created. This function takes two parameters, namely “number” and “div.”
• A terminal condition for recursion is introduced. Check if “div&It;=number/2” is true. Check remainder of number%i using the modulo operator. If the remainder is 0, then add it to the sum. “div” is incremented. Then “findPerfect()” is called recursively.
• If the returned output of “findPerfect()” equals the number, it is a perfect number.

## Programs: Perfect Number in Java

### 1. Program: Perfect Number in Java Using For Loop

Input: Source

Output: Source

This program permits the developer to enter any number. It checks the validity of a perfect number using the “java for loop.” First of all, there is a declaration of three integer variables, i.e.,” i,” number, and sum=0. Thus, the statement asks the user to enter any positive integer assigned to the variable number.

In the following line, “for loop” is introduced. The condition inside the “for loop” (i< number) makes sure that “i” should never exceed the number. An “if condition” is used inside this “for loop.” This is done to check if the number is completely divisible by “i” or not. There are two situations:

• 1st case in which the number is completely divisible by “i,” then it is added to the sum.
• 2nd case in which the number is not divisible by “i,” then it will be incremented by one and then checked for the next value.

Working Principle of “for loop” in this program:

The user has entered six as the input number. The working principle of “for loop” can be understood in an iteration-wise manner.

• First Iteration:

Here number= 6, sum= 0, and “i”= 1. The condition inside the “for loop” (1<6) is true, and hence, the program will start executing the statements inside the “for loop.” Within this “for loop,” there is an “if-else” statement and the condition “if (6%1= = 0) is true. Thus, sum= sum+“i.” Thus sum= 0+1= 1. At the end, “i” will be incremented by 1.

• Second Iteration:

In the second iteration, both the values of sum and “i” have changed as sum= one and “i”= 2. Now the condition inside the “for loop” (2<6) is true. Now, with in the “for loop”, the if condition if (6% 2= = 0) is true. Thus, the new sum will be incremented by “i.’ Hence, the sum= 1+2= 3. In the end, “i” is incremented by 1.

• Third Iteration:

In the third iteration, the values of sum= three and “i”= 3. The condition inside the “for loop” (3<6) is true. The if condition if (6% 2= = 0) is true within the “for loop.” Thus, the new sum will be incremented by “i.” Hence, the sum= 3+3= 6. In the end, “i” is incremented by 1.

• Fourth and Fifth Iteration:

The if condition fails in both fourth and fifth iterations. This is as:

If (6 % 4 = =0) is false and If (6 % 5 = =0) is also false.

• Sixth Iteration:

In the sixth iteration, the java compiler will end the “for loop” due to its failure. This is because the value of “i” becomes six, which means that the “for loop” fails as (6 < 6).

At the next step, the “if condition” if (sum = = number), is checked. If this condition is true, then system.out.format( “\n% d is a Perfect Number” , Number) ; is executed. Otherwise, system.out.format( “\n% d is NOT a Perfect Number” , Number) ; is executed.

### 2. Program: Perfect Number in Java Using While Loop

Input: Source

Output: Source

This program also allows the programmer to enter any number. The number thus entered is validated to be a perfect number using “While Loop.” The program executes in the same manner, just like in the “for loop.”

### 3. Program: Perfect Number in Java Using Functions

Input: Source

Output: Source

In this program, the value entered by the user is passed to the method that is created. It will use java “for loop” to check if the number is a perfect number or not.

A function is called as the previous function is declared as void. It is

PerfectNumber (Number) ;

Hence, when the compiler reaches to PerfectNumber (Number) line in the main() program, the compiler immediately jumps to the following function mentioned below

public static void PerfectNumber (int Number) {

### 4. Program: Perfect Number in Java Using OOPS

Input:  Source

Output: Source

In this java program, the code is divided using object-oriented programming. A function is created to find the factors of the given number and to calculate the factors’ addition. After this, another function is declared to check if the first function return value is equal to the function parameter or not.

First of all, a class is created that is used to hold a method to find the sum of factors. An instance of the class thus created, and the methods are called.

PerfectNumber Class Analysis:

A function is created to find the factors of the given input number and then summing up all factors.

Main Class Analysis:

An instance or object of the PerfectNumber class is created. It is

PerfectNumber pn = new PerfectNumber () ;

In the next step, FindPerfectNumber(Number) method is called. It returns an integer value that is assigned to the sum. It is

Sum = pn.FindPerfectNumber(Number) ;

In the end, the java “if-else” statement is used to check if the return value is equal to the specified number defined by the user or not.

There is an option to create one more method inside the PerfectNumber class. This method checks whether the sum is equal to the number or not.

### 5. Program: To Find Perfect Number Between 1 to 1000

Input: Source:

Output: Source

In this program, the user can add the minimum and maximum values. This program will find the perfect number between the minimum and maximum values.

In this program, different statements are used that ask for the minimum and maximum values. Once the minimum and maximum values are assigned to the variables, “for loop” is used. Iterations start between the minimum and maximum values.

for (Number = Minimum; Number <= Maximum; Number++) {

Hence, the program checks for the perfect number.

### 6. Program to check perfect number in java using checkPerfectSquare()

Input: Source

Output: Source

In this program a user-defined method checkPerfectSqaure() is created. It takes a number as an input parameter and reverts to true if the number is a perfect square. Otherwise, it returns to false.

In this program, two of the Math class methods, i.e., sqrt() method and floor() method, are used. The Math.sqrt() method determines the square root of the input number. The floor() method determines the nearest integer of the square root value reverted by the sqrt() method.

Then, the difference obtained by subtracting these two is calculated. The next step is to check whether this difference is non-zero or zero. If the difference is zero, then the number is a perfect square. This is due to the reason that a perfect square number’s square root is the integer itself.

Points to Remember: Perfect Number in Java

• There are different methods to find a perfect number in Java.
• It is still unknown if there is any odd perfect number.
• All perfect numbers are also Granville numbers.
• A semi-perfect number is any natural number equal to the sum of some or all of its proper divisors.
• The only square less perfect number is 6.
• The only perfect number that is even and is of the form x raised to power three and adding 1 to it is 28.
• The lone even perfect number that is the sum of the two positive integers’ cubes is 28.
• The perfect numbers N’s divisor’s reciprocals must add to 2.
• The digital root of every even perfect number other than 6 is 1.
• The numeric count of a perfect number’s divisors is always even. This is because N can’t be a perfect square.
• The even perfect numbers can’t be denoted as the difference between two positive triangular numbers that are not consecutive. ## Plan your Software Development Career Now!

### Popular Software Development Skills  