C Program to find Perfect Number

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. Any number can be the perfect number in C if the sum of its positive divisors excluding the number itself is equal to that number.

For example, 6 is a perfect number in C 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.

C Program to find Perfect Number using For Loop

This perfect number in 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 ;   
}
C Program to find Perfect Number using For Loop

In this C perfect number program, 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") ;

The below C Programming scanf statement will assign the user entered a value to the Number variable

scanf("%d", &Number) ;

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

 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

  1. If the number is perfectly divisible by i, then i will be added to the Sum
  2. If the number is not divisible by i, the i value will increment by 1 and check for next value

From the above Screenshot of this perfect number in c, 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 succeeded here So,
Sum = Sum + i
Sum = 0 +1 = 1

Second Iteration: From the first Iteration, the values of both Sum and i has changed as Sum = 1 and i = 2

If (Number % i == 0)
6 % 2 == 0 – True
Sum = Sum + i
Sum = 1 + 2 = 3

Third Iteration

From the second Iteration of c program to find perfect number, the values of both Sum and i has changed as Sum = 3 and i = 3

If (6 % 3 == 0) – True
Sum = Sum + i
Sum = 3 + 3 = 6

For the fourth and fifth iterations of the perfect number in c program, the condition inside the if condition will fail
6 % 4 == 0 (FALSE)
6 % 5 == 0 (FALSE)

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

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

If the condition (Sum == Number) is TRUE, the below printf statement will execute

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

If the condition (Sum == Number) is FALSE, the below printf statement will execute

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

For this example (Sum == Number) is True. So, the given Number is Perfect Number in C programming

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 a 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 ;   
}
 Please Enter any number 
28

 28 is a Perfect Number

We haven’t done anything special in this example. We just replaced the For loop in the first program for the perfect number with While Loop. If you find it difficult to understand the While loop functionality, then please refer to While Loop in C article.

C Program to Find Perfect Number between 1 to 1000

This program for a perfect number allows the user to enter a minimum and maximum values. This C program finds a 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;
}
 Please Enter the Minimum & Maximum Values
1
1000
Perfect Numbers Between 1 and 1000 are:
 6   28   496  

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

The For Loop in this perfect number example helps the compiler to iterate between Minimum and Maximum Variables. The iteration starts at the Minimum, and then it will not exceed the 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.