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.

**Example**

**Input**

Input any number: 6

**Output**

6 is PERFECT NUMBER

## 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.

- Input a number from user. Store it in some variable say
`num`. - Initialize another variable to store sum of proper positive divisors, say
`sum = 0`

. - 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`

. - Inside the loop if current number i.e.
`i`is proper positive divisor of`num`, then add it to`sum`. - 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);
}
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 😉