## C program to print all Deficient numbers from 1 to 100:

In this post, we will learn how to print all *deficient* numbers from *1* to *100*. The program will use a function to check if a number is *deficient* or not and by using a loop from *1* to *100*, it will use this function to find and print all *deficient* numbers.

Letâ€™s learn what is a *deficient* number and the algorithm that we will use in the program.

### What is a deficient number:

*Deficient* numbers are also known as *defective* numbers. It is a number whose sum of divisors of it is less than *2 * number*. We can also find the proper divisors of a number to check if it is a *defective* number or not. For *deficient* numbers, the sum of proper divisors is less than the number.

For example, *21* is a deficient number. Its proper divisors are *1, 3* and *7*. The sum is *1 + 3 + 7 = 11*. It is smaller than *21*. So, it is a deficient number.

*18* is not a deficient number. Its proper divisors are *1, 2, 3, 6* and *9*. The sum is *1 + 2 + 3 + 6 + 9 = 21*. It is bigger than *18*. So, it is not a deficient number.

### Algorithm to print all deficient numbers from 1 to 100:

The program will use the below algorithm to print all *deficient* numbers from 1 to 100:

- Run a loop from
*1*to*100*. - On each iteration of this loop, check if the current value is
*deficient*number or not. If it is, print the number. - Use another method to check if a number is
*deficient*number or not. This method will take a number as the parameter and return*1*if that number is*deficient*. Else, return*0*.- This method will take a number as the parameter.
- Initialize a variable as
*0*to hold the sum of all proper divisors. - By using a loop, it will run from
*1*to*number - 1*and find all proper divisors of that number. It will add the proper divisors to the sum variable. - Once the loop ends, it will check if the
*sum*is bigger than the number or not and based on that, it will return*1*or*0*.

### Method 1: C program to print all deficient numbers from 1 to 100 using for loop:

Below is the complete *C program*:

```
#include <stdio.h>
int isDeficient(int n)
{
int sum = 0;
for (int i = 1; i < n; i++)
{
if (n % i == 0)
{
sum += i;
}
}
return sum < n;
}
int main()
{
printf("Deficient numbers within 1 to 100 are: ");
for (int i = 1; i <= 100; i++)
{
if (isDeficient(i))
{
printf("%d ", i);
}
}
printf("\n");
return 0;
}
```

Here,

*isDeficient*method is used to check if a number is*deficient*or not.- It takes a number as the parameter and returns
*1*if it is a*deficient*number. Else, it returns*0*. - It initializes a variable
*sum*as*0*to hold the sum of all proper divisors. - It starts a
*for loop*from*1*to*number - 1*and it finds all proper divisors within this range. If any proper divisor is found it adds this value to the*sum*variable. - It compares the value of
*sum*with*n*and returns*1*or*0*. If*sum*is smaller than*n*, it returns*1*. Else, it returns*0*.

- It takes a number as the parameter and returns
- The
*main*method runs first. It uses a*for loop*that runs from*1*to*100*and for each value, it calls the*isDeficient*method to check if it is a*deficient*number or not. - If yes, it prints its value.

### Output:

If you run the above program, it will give the below output:

`Deficient numbers within 1 to 100 are: 1 2 3 4 5 7 8 9 10 11 13 14 15 16 17 19 21 22 23 25 26 27 29 31 32 33 34 35 37 38 39 41 43 44 45 46 47 49 50 51 52 53 55 57 58 59 61 62 63 64 65 67 68 69 71 73 74 75 76 77 79 81 82 83 85 86 87 89 91 92 93 94 95 97 98 99 `

### Method 2: C program to print all deficient numbers from 1 to 100 using while loop:

We can also use a *while loop* instead of a *for loop* in the above program. It will work in a similar way.

Below is the complete program:

```
#include <stdio.h>
int isDeficient(int n)
{
int sum = 0, i = 1;
while (i < n)
{
if (n % i == 0)
{
sum += i;
}
i++;
}
return sum < n;
}
int main()
{
int i = 1;
printf("Deficient numbers within 1 to 100 are: ");
while (i <= 100)
{
if (isDeficient(i))
{
printf("%d ", i);
}
i++;
}
printf("\n");
return 0;
}
```

If you run this program, it will print:

`Deficient numbers within 1 to 100 are: 1 2 3 4 5 7 8 9 10 11 13 14 15 16 17 19 21 22 23 25 26 27 29 31 32 33 34 35 37 38 39 41 43 44 45 46 47 49 50 51 52 53 55 57 58 59 61 62 63 64 65 67 68 69 71 73 74 75 76 77 79 81 82 83 85 86 87 89 91 92 93 94 95 97 98 99 `

### You might also like:

- C program to check if a number is Abundant or Excessive
- C program to find if a number is a Deficient number or not
- C program isxdigit method example to check if a character is hexadecimal
- C program to find all Abundant numbers from 1 to 100
- C program to check if a character is lowercase using islower
- C program to check if a character is uppercase using isupper