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

 Why Learn to Code? How Learn to Code? How to Install Specific Version of NPM Package? Types of Inheritance in C++ What Should You Know?

• ### 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.

## Explore Free Courses

×
Get Free career counselling from upGrad experts!
Book a session with an industry professional today!
Get Free career counselling from upGrad experts!
Book a Session with an industry professional today!