C program to print all prime numbers from 1 to n
Learn how to print all prime numbers from 1 to n using C. This article provides a detailed explanation and a complete C program to find and print prime numbers efficiently.
Finding all prime numbers between 1 and a given number n
is a common programming challenge and an essential concept in number theory. This article will guide you through writing a C program to print all prime numbers in this range.
Introduction
Prime numbers are natural numbers greater than 1 that have no divisors other than 1 and themselves. Printing all prime numbers between 1 and n
is a fundamental task that can be achieved efficiently with the right approach.
Prime Number Concept
A number p
is considered prime if it is only divisible by 1 and itself. For example, 2, 3, 5, and 7 are prime numbers, whereas 4, 6, 8, and 9 are not.
To check if a number is prime number or not check this article -
C program to check if a number is prime number
Method to Find Prime Numbers
To find all prime numbers between 1 and n
, we can use a nested loop approach:
- Loop through each number from 2 to
n
. - For each number, check if it is divisible by any number from 2 to the square root of that number.
- It is prime if the number is not divisible by any of these.
This method is efficient because it reduces the number of checks needed to determine if a number is prime.
Write a C program to print all prime numbers from 1 to n
Here is a C program to print all prime numbers between 1 and n
:
#include <stdio.h>
#include <math.h>
int main() {
int n, i, j, isPrime;
// Taking input from the user
printf("Enter a positive integer: ");
scanf("%d", &n);
printf("Prime numbers between 1 and %d are: ", n);
// Loop through each number from 2 to n
for (i = 2; i <= n; i++) {
isPrime = 1; // Assume the number is prime
// Check if i is divisible by any number from 2 to sqrt(i)
for (j = 2; j <= sqrt(i); j++) {
if (i % j == 0) {
isPrime = 0; // i is not prime
break;
}
}
// If isPrime is still 1, then i is a prime number
if (isPrime) {
printf("%d ", i);
}
}
return 0;
}
Output
Enter a positive integer: 10
Prime numbers between 1 and 10 are: 2 3 5 7
Explanation of the Code
- Input: The program takes an integer input
n
from the user. - Outer Loop: The outer loop iterates from 2 to
n
. Each number in this range is checked for primality. - Assumption: The variable
isPrime
is initially set to 1, assuming the current numberi
is prime. - Inner Loop: The inner loop checks if
i
is divisible by any number from 2 to the square root ofi
. Ifi
is divisible by any of these numbers,isPrime
is set to 0 (indicating thati
is not prime), and the loop breaks. - Prime Check: After the inner loop, if
isPrime
is still 1, the numberi
is printed as a prime number.
Why Check Up to √i?
Checking up to the square root of i
reduces the number of iterations significantly, improving the algorithm's efficiency. This is because if i
is divisible by a number larger than its square root, it must also be divisible by a number smaller than its square root.