C program to check whether a number is perfect number or not

Write a C program to input a number and check whether the number is Perfect number or not. How to check perfect number in C programming using loop. Logic to check perfect number in C programming.



Input any number: 6



Required knowledge

Basic C programming, If else, For loop

What is Perfect number?

Perfect number is a positive integer which is equal to the sum of its proper positive divisors.
For example: 6 is the first perfect number
Proper divisors of 6 are 1, 2, 3
Sum of its proper divisors = 1 + 2 + 3 = 6.
Hence 6 is a perfect number.

Logic to check Perfect number

Step by step descriptive logic to check Perfect number.

  1. Input a number from user. Store it in some variable say num.
  2. Initialize another variable to store sum of proper positive divisors, say sum = 0.
  3. Run a loop from 1 to num/2, increment 1 in each iteration. The loop structure should look like for(i=1; i<=num/2; i++).Why iterating from 1 to num/2, why not till num? Because a number does not have any proper positive divisor greater than num/2.
  4. Inside the loop if current number i.e. i is proper positive divisor of num, then add it to sum.

    Learn – Program to check divisibility of a number.

  5. Finally, check if the sum of proper positive divisors equals to the original number. Then, the given number is Perfect number otherwise not.

Program to check perfect number

 * C program to check whether a number is Perfect number or not

#include <stdio.h>

int main()
    int i, num, sum = 0;

    /* Input a number from user */
    printf("Enter any number to check perfect number: ");
    scanf("%d", &num);

    /* Calculate sum of all proper divisors */
    for(i = 1; i <= num / 2; i++)
        /* If i is a divisor of num */
        if(num%i == 0)
            sum += i;

    /* Check whether the sum of proper divisors is equal to num */
    if(sum == num && num > 0)
        printf("%d is PERFECT NUMBER", num);
        printf("%d is NOT PERFECT NUMBER", num);

    return 0;


Enter any number to check perfect number: 6

Happy coding 😉