Python Program to Check if a Number is a Perfect Number

A Perfect Number is a positive integer that equals the sum of its positive divisors, excluding the number itself. For example, 6 is a perfect number because its divisors (1, 2, 3) sum to 6. The first few perfect numbers are 6, 28, 496, and 8128.

Basic Method to Check Perfect Number

We can iterate through all numbers from 1 to n-1 and check if they divide n evenly ?

n = 6
my_sum = 0

for i in range(1, n):
    if n % i == 0:
        my_sum = my_sum + i

if my_sum == n:
    print("The number is a perfect number")
else:
    print("The number is not a perfect number")
The number is a perfect number

Testing with Different Numbers

Let's test our logic with both perfect and non-perfect numbers ?

def is_perfect_number(n):
    if n <= 1:
        return False
    
    divisor_sum = 0
    for i in range(1, n):
        if n % i == 0:
            divisor_sum += i
    
    return divisor_sum == n

# Test with different numbers
test_numbers = [6, 28, 12, 496, 8]

for num in test_numbers:
    if is_perfect_number(num):
        print(f"{num} is a perfect number")
    else:
        print(f"{num} is not a perfect number")
6 is a perfect number
28 is a perfect number
12 is not a perfect number
496 is a perfect number
8 is not a perfect number

Optimized Method

We can optimize by checking divisors only up to the square root of n ?

import math

def is_perfect_optimized(n):
    if n <= 1:
        return False
    
    divisor_sum = 1  # 1 is always a divisor
    
    for i in range(2, int(math.sqrt(n)) + 1):
        if n % i == 0:
            divisor_sum += i
            # Add the corresponding divisor if it's different
            if i != n // i:
                divisor_sum += n // i
    
    return divisor_sum == n

# Test the optimized function
numbers = [6, 28, 100, 496]

for num in numbers:
    result = is_perfect_optimized(num)
    print(f"{num}: {'Perfect' if result else 'Not Perfect'}")
6: Perfect
28: Perfect
100: Not Perfect
496: Perfect

How It Works

  • We iterate through potential divisors from 1 to n-1

  • For each number that divides n evenly (remainder is 0), we add it to our sum

  • If the final sum equals the original number, it's a perfect number

  • The optimized version reduces iterations by checking only up to ?n

Conclusion

Perfect numbers are rare mathematical curiosities. Use the basic method for understanding the concept, and the optimized version for better performance with larger numbers.

Updated on: 2026-03-25T19:22:15+05:30

3K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements