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.
- Read a number from user, which is to be checked for perfect number. 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, 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.
- 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.
- 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 ;)