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

Previous Program Next Program

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 have programming knowledge for this program.

What is Perfect number?

Perfect number is a positive integer which is equal to the sum of its proper positive divisors. Read more about Perfect numbers.
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. Read 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<=n/2; i++). Here a question might pop in your mind. Why running loop from 1 to n/2, why not till n? Because a number does not have any proper positive divisor greater than n/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;

    /* Read 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 ;)

Recommended posts

Previous Program Next Program

Labels: , ,