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.

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




Instagram