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

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

Example

Input

Input any number: 6

Output

6 is PERFECT NUMBER

Required knowledge

Basic C programming, For loop, If else

Must know -

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

Below is the step by step descriptive logic to check Perfect number.

  1. Input a number from user, which is to be checked for perfect number. 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, incrementing 1 in each iteration. The loop structure is for(i=1; i<=num/2; i++). Here a question might pop in your mind. Why running loop 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. Which is if(num % i == 0) then, perform sum = sum + i.
  5. Finally, if the sum of proper positive divisors equals to the original number. Which is if(sum == num) 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; 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)
    {
        printf("%d is PERFECT NUMBER", num);
    }
    else
    {
        printf("%d is NOT PERFECT NUMBER", num);
    }

    return 0;
}

Output

Enter any number to check perfect number: 6
6 is PERFECT NUMBER

Happy coding 😉

Write your doubts or suggestion. I will try my best to help. You must escape source code before commenting. To format your source code paste your source code inside
<pre><code> ----Your Source Code---- </code></pre>