Java Program to Check Perfect Number
A perfect number is a number that is equal to the sum of its proper divisors excluding itself.
For example, 6 is a perfect number because its divisors (1, 2, 3) add up to 6.
1. Understanding the Problem
Determine whether a given number is a perfect number.
Number: 6 → Perfect Number: 28 → Perfect Number: 10 → Not Perfect
2. Using Basic Loop
Java
Check perfect number using loop
import java.util.Scanner;
public class PerfectNumber {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter a number: ");
int num = sc.nextInt();
int sum = 0;
for (int i = 1; i < num; i++) {
if (num % i == 0) {
sum += i;
}
}
if (sum == num)
System.out.println("Perfect Number");
else
System.out.println("Not a Perfect Number");
}
}
3. Optimized Approach
Java
Check perfect number using optimized logic
import java.util.Scanner;
public class PerfectOptimized {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter a number: ");
int num = sc.nextInt();
int sum = 1;
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) {
sum += i;
if (i != num / i) {
sum += num / i;
}
}
}
if (num > 1 && sum == num)
System.out.println("Perfect Number");
else
System.out.println("Not a Perfect Number");
}
}
4. Common Mistakes
1. Including the number itself in divisor sum.
2. Not starting sum from 1.
3. Running loop till n instead of √n (inefficient).
4. Not handling numbers less than 1.
5. Applications
1. Used in number theory studies.
2. Helpful for understanding divisor-based logic.
3. Common coding interview question.
Conclusion
Perfect number programs help in understanding loops and divisor logic.
Using optimized methods improves performance for larger numbers.
Codecrown