## Perfect Number in C

Any number can be the perfect number if the sum of its positive divisors excluding the number itself is equal to that number.

For example, 6 is a perfect number because 6 is divisible by 1, 2, 3 and 6. So, the sum of these values is 1+2+3 = 6 (Remember, we have to exclude the number itself. That’s why we haven’t added 6 here). Some of the perfect numbers are 6, 28, 496, 8128 and 33550336 etc

In this article, we will show you, how to write a C Program to find Perfect Number Using For Loop and While loop. We also find the Perfect Numbers between 1 and 100 with examples.

## C Program to find Perfect Number Using For Loop

This C program allows the user to enter any number. Using this number it will calculate whether the number is a Perfect number or not using the For Loop.

/* C Program to find Perfect Number using For Loop */ # include <stdio.h> int main() { int i, Number, Sum = 0 ; printf("\n Please Enter any number \n") ; scanf("%d", &Number) ; for(i = 1 ; i < Number ; i++) { if(Number % i == 0) Sum = Sum + i ; } if (Sum == Number) printf("\n %d is a Perfect Number", Number) ; else printf("\n%d is not the Perfect Number", Number) ; return 0 ; }

**OUTPUT**

**ANALYSIS**

We declared 3 integer variables i, Number and Sum = 0.

Below printf statement will ask the user to enter any positive integer value

printf("\n Please Enter any number \n") ;

Below scanf statement will assign the user entered a value to the Number variable

scanf("%d", &Number) ;

In the next line, we have for loop. The condition inside the for loop (i < Number) will make sure to not exceed i value more than number.

for(i = 1 ; i < Number ; i++) { if(Number % i == 0) Sum = Sum + i ; }

If Condition inside the for loop will check whether the Number is Perfectly divisible by i value or not. Please refer If Statement in C article to understand the If statement

- If the Number is perfectly divisible by i then i value will be added to the Sum
- If the Number is not divisible by i then i value will be incremented by 1 and check for next value

From the above Screenshot, User Entered value is: Number = 6

**First Iteration**

For the first Iteration, Number = 6, Sum = 0 and i = 1

If (Number % i == 0)

6 % 1 == 0

If statement is succeeded here So,

Sum = Sum + i

Sum = 0 +1 = 1

**Second Iteration**

From the second Iteration the values of both Sum and i has been changed as: Sum = 1 and i = 2

If (Number % i == 0)

6 % 2 == 0

If statement is succeeded here So,

Sum = Sum + i

Sum = 1 + 2 = 3

**Third Iteration**

From the third Iteration the values of both Sum and i has been changed as: Sum = 3 and i = 3

If (Number % i == 0)

6 % 3 == 0

If statement is succeeded here So,

Sum = Sum + i

Sum = 3 + 3 = 6

For the fourth and fifth iterations condition inside the if condition will fail

6 % 4 == 0 (FALSE)

6 % 5 == 0 (FALSE)

For the sixth iteration, value of i become 6 which means the condition inside the for loop will fail (6 < 6). So, compiler will terminate the for loop.

In the next line we have If condition to check whether the value inside the Sum variable is exactly equal to given Number or Not.

If the condition (Sum == Number) is TRUE then below printf statement will be executed

printf("\n %d is a Perfect Number", Number) ;

If the condition (Sum == Number) is FALSE then below printf statement will be executed

printf("\n %d is not the Perfect Number", Number) ;

For this example (Sum == Number) is True. So, given Number is Perfect Number

## C Program to find Perfect Number using While Loop

This perfect number in c program allows the user to enter any number. Using this number it will calculate whether the user input is a Perfect number or not using While loop in C.

/* C Program to find Perfect Number using While Loop */ # include <stdio.h> int main() { int i = 1, Number, Sum = 0 ; printf("\n Please Enter any number \n") ; scanf("%d", &Number) ; while( i < Number ) { if(Number % i == 0) Sum = Sum + i ; i++; } if (Sum == Number) printf("\n %d is a Perfect Number", Number) ; else printf("\n%d is not the Perfect Number", Number) ; return 0 ; }

We haven’t done anything special in this example. We just replaced the For loop with While Loop and if you find difficult to understand the While loop functionality then please refer While Loop in C article.

**OUTPUT**

## C Program to Find Perfect Number between 1 to 1000

This program allows the user to enter a minimum and maximum values. This program will find the Perfect Number between the Minimum and Maximum values.

/* C Program to Find Perfect Number between 1 to 1000 */ #include <stdio.h> int main() { int Number, Sum, i, Minimum, Maximum; printf("\n Please Enter the Minimum & Maximum Values\n"); scanf("%d %d", &Minimum, &Maximum); printf("Perfect Numbers Between %d and %d are:\n", Minimum, Maximum); for(Number=Minimum; Number<=Maximum; Number++) { for(i = 1, Sum =0 ; i < Number ; i++) { if(Number % i == 0) Sum = Sum + i ; } if (Sum == Number) printf(" %d ", Number) ; } return 0; }

**OUTPUT**

**ANALYSIS**

for (Number=Minimum; Number<=Maximum; Number++)

This For Loop helps the compiler to iterate between Minimum and Maximum Variables, iteration starts at the Minimum and then it will not exceed Maximum variable.

Inside the for loop, we are checking whether that number is a perfect number or not. We already explained the for loop iteration in the first example.

Thank You for Visiting Our Blog