## Perfect Number

Any number can be 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 are: 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 so on

## 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 Perfect number or not using the For Loop in C.

**CODE**

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
/* 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

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

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

1 |
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 the i value more than number.

1 2 3 4 5 |
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

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

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

1 |
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 program allows the user to enter any number. Using this number it will calculate whether the user input is Perfect number or not using While loop in C.

**CODE**

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
/* 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 minimum and maximum values. This program will find the Perfect Number between the Minimum and Maximum values.

**CODE**

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
/* 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**

This program allows the user to enter minimum and maximum values.

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

This For Loop helps 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 perfect number or not. We already explained the for loop iteration in the first example.

Thank You for Visiting Our Blog

## Share your Feedback, or Code!!