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 😉

About Pankaj

Pankaj Prakash is the founder, editor and blogger at Codeforwin. He loves to learn new techs and write programming articles especially for beginners. He works at Vasudhaika Software Sols. as a Software Design Engineer and manages Codeforwin. In short Pankaj is Web developer, Blogger, Learner, Tech and Music lover.

Follow on: Twitter | Google | or

Comments and discussion
Have a doubt, write here. I will help my best.
Before commenting you must escape your source code before commenting. Paste your source code inside
<pre><code> ----Your Source Code---- </code></pre>