## C program to find all prime numbers in a range:

In this post, we will write a program to find all *prime numbers* in a given range or it will find all the prime numbers between *1* and *N*, where *N* will be a user-given number. The program will ask the user to enter the value of *N* and it will print all numbers between *1* to *N*.

With this program, you will learn how to check if a number is prime or not, and how to use a loop to find all prime numbers in a given range.

### Prime number:

A number is called a *prime number* if it is divisible by *1* and the number itself. For example, *7* is a prime number but *8* is not. Note that *1* is not a prime number. The first prime number is *2*. It is also the only even prime number because all other even numbers are divisible by *2*.

### Algorithm to check if a number is prime or not:

To check if a number is *prime* or not, we have to use a loop. The loop will check for all numbers starting from *2*. If it finds any value that can divide the number, it will not be a prime number. Else, it will be a prime number.

We can iterate from *2* to *number - 1*. We can also iterate from *2* to *number/2* to reduce the number of iteration. Because no number greater than *number/2* can divide the number. Similarly, we can further optimize it to iterate from *2* to *square root of number*. Let’s write down programs for all these ways.

### Method 1: C program to find all prime numbers between 1 to N:

In this method, we will use a loop to iterate from *2* to *number - 1* to check if a number is prime or not. Below is the complete program:

```
#include <stdio.h>
int isPrime(int no)
{
if (no == 1)
{
return 0;
}
for (int i = 2; i < no; i++)
{
if (no % i == 0)
{
return 0;
}
}
return 1;
}
int main()
{
int N;
printf("Enter the value of N: ");
scanf("%d", &N);
printf("Prime numbers between 1 to %d: ", N);
for (int i = 2; i <= N; i++)
{
if (isPrime(i))
{
printf("%d ", i);
}
}
}
```

Here,

*N*is a variable to hold the upper limit of the range. It asks the user to enter the value of*N*, and stores the value in*N*.- The
*for loop*prints the prime numbers between*1*to*N*. Since*1*is not a prime number, the loop starts from*2*. - The
*isPrime*method checks if the current value of*i*is prime or not. If yes, it prints the value of*i*.- The
*isPrime*method takes one number as its parameter and checks if that number is prime or not. It returns*0*if it is not a prime number. Else, it returns*1*. - If the number is
*1*, it returns*0*. - It runs one loop from
*i = 2*to*i = number - 1*. On each iteration, it checks if the number is divisible by*i*or not. If it is divisible, it returns*0*i.e. it is not a prime number. Once the loop ends, it returns*1*, i.e. it is a prime number.

- The

If you run this program, it will print output as like below:

```
Enter the value of N: 100
Prime numbers between 1 to 100: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
Enter the value of N: 10
Prime numbers between 1 to 10: 2 3 5 7
```

### Method 2: C program to find all prime numbers between 1 to N by iterating to number/2:

We can iterate from *2* to *number/2* to check if a number is prime or not. Let’s change the *isPrime* method of the above example to run the loop from *2* to *number/2*:

```
#include <stdio.h>
int isPrime(int no)
{
if (no == 1)
{
return 0;
}
for (int i = 2; i <= no/2; i++)
{
if (no % i == 0)
{
return 0;
}
}
return 1;
}
int main()
{
int N;
printf("Enter the value of N: ");
scanf("%d", &N);
printf("Prime numbers between 1 to %d: ", N);
for (int i = 2; i <= N; i++)
{
if (isPrime(i))
{
printf("%d ", i);
}
}
}
```

If you run this program, it will give a similar output.

### Method 3: C program to find all prime numbers between 1 to N by iterating to square root of number:

Let’s reduce the number of iteration further. Instead of iterating to *number/2*, we can also iterate up to *square root of the number* to check if a number is prime or not. Below is the complete program:

```
#include <stdio.h>
#include <math.h>
int isPrime(int no)
{
if (no == 1)
{
return 0;
}
for (int i = 2; i <= sqrt(no); i++)
{
if (no % i == 0)
{
return 0;
}
}
return 1;
}
int main()
{
int N;
printf("Enter the value of N: ");
scanf("%d", &N);
printf("Prime numbers between 1 to %d: ", N);
for (int i = 2; i <= N; i++)
{
if (isPrime(i))
{
printf("%d ", i);
}
}
}
```

This program uses the *sqrt* method to find the square root of a number. This method is defined in the *math.h* header file. It will print similar result.

### You might also like:

- 4 different ways to print the natural numbers in reverse order in C
- C program to find the first and the last digits of a number
- C program to find the sum of digits of a number
- 2 different C programs to draw a butterfly pattern
- 2 different C programs to find the volume and surface area of a cylinder
- 2 different C programs to print a triangle of prime numbers
- 4 different C programs to check if a number is prime or not