A number is called a prime number if it has only two divisors which are '1' and that 'number' itself. For a better understanding of this counting all prime number C program, we always recommend you to learn the basic topics of C programming listed below:

In this C example, you will learn to print all prime numbers between two numbers (entered by the user) by making a user-defined function. **A number that is not divisible by any other numbers except that number and '1' is called a prime number**. This property is called **primality,** For example, **7 **is a prime number because **7** has only two divisors such that '**1**' and '**7**' itself.

Note: The largest prime number has '**17,425,170**' digits.

This C program needs to generate prime numbers of a particular range, and we need to find out the count of prime numbers displayed.

We are using a little complex logic in this C program as we are using a nested for loop. First, check if the given numbers are greater than **2**; if not, the program exits with a message "not a valid number to check for prime."

Now use a nested '`for loop`

', in the outer loop, check numbers from '**m**' to '**n**' and set **flag = 0**, here '**m**' and '**n**' are the lower and upper limits given by the user. Then, in the inner **'**`for loop`

', we take and check if each number is prime or not.

**m = lower limit entered by the user**.**n = Upper limit entered by the user**.

Let us take an example to understand the concept clearly, let's print the prime number between '**3**' to '**10**'. In the outer '`for loop`

', we take each number from '**3**' to '**10**'. Inside the inner '`for loop`

', check every number for **prime or not**.

Take number '**3**' in the inner loop and check if it has only two divisors; if so, set the flag as **zero**, and we print the number **3** as prime. Then go to the outer loop to take the next number and do the prime number check in the inner loop, each time we encounter a prime number, we increment the counter variable.

**STEP 1**: Include the Header Library to use the built-in functions in the C program.

**STEP 2**: Start the program execution with the **main()** function.

**STEP 3**: Accept the value of the lower and upper limit of the series from the user using `printf`

and `scanf`

functions.

**STEP 4**: Check the number Upper limit is greater than **2** using the '`if`

' condition. If it's not satisfied print, it's not possible to find Prime numbers.

**STEP 5**: Else copy the Lower limit to a **temp** variable and using **Mod** operator with '**m**' and **2** is **Zero** if so, increment the variable '**m**' by **1**.

**STEP 6**: Open the Outer For loop from '**m**' to '**n**' incremented by **2** (no need to check the Even Numbers)

**STEP 7**: Open the Inner Loop from **2** to half to the value of the variable '**i**' and increment by **1**.

**STEP 8**: Check the '**i**' mod '**j**' is Zero or not. Suppose it is Zero, set Flag as one, and Break the loop.

**STEP 9**: If the Flag is Zero after the Inner loop, print that number as Prime and increment the Count by **1**.

` ````
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void main()
{
int M, N, i, j, flag, temp, count = 0; // declares the variables
printf("Enter the value of M and N\n");
scanf("%d %d", & M, & N);
if (N < 2)
{
printf("There are no primes upto %d\n", N); /*check the numbers are greater than 2*/
exit(0);
}
printf("Prime numbers are\n");
temp = M;
if (M % 2 == 0)
{
M++;
}
for (i = M; i <= N; i = i + 2) /* start of the outer loop and set the flag as zero */
{
flag = 0;
for (j = 2; j <= i / 2; j++) /* inner loop to check the number is prime */
{
if ((i % j) == 0)
{
flag = 1;
break;
}
}
if (flag == 0)
{
printf("%d\n", I); /* print the number is prime if flag is zero */
count++;
}
}
printf("Number of primes between %d and %d = %d\n", temp, N, count);
}
```

Enter the value of M and N 15 45 Prime numbers are 17 19 23 29 31 37 41 43 Number of primes between 15 and 45 = 8