Open In App

Program to find Prime Numbers Between given Interval

Last Updated : 24 Dec, 2024
Summarize
Comments
Improve
Suggest changes
Like Article
Like
Save
Share
Report
News Follow

Given two numbers m and n as interval range, the task is to find the prime numbers in between this interval.

Examples: 

Input: m = 1, n = 10
Output: 2 3 5 7

Input : m = 10, n = 20
Output : 11 13 17 19

[Naive Approach] Basic Trial Division Method – O(n*n) Time and O(1) Space

The simplest method to check if a number i is prime by checking every number from 2 to i-1. If the number n is divisible by any of these, it’s not prime.

C++
// C++ program to find the prime numbers
// between a given interval

#include <bits/stdc++.h>
using namespace std;

bool isPrime(int n) {

    if (n <= 1)
        return false;

    for (int i = 2; i < n; i++) {
        if (n % i == 0)
            return false;
    }

    return true;
}

// Function to find all prime numbers in the range [m, n]
vector<int> primeRange(int m, int n) {

    // Initialize a vector to store prime numbers
    vector<int> ans;

    // Iterate over each number in the range [m, n]
    for (int i = m; i <= n; i++) {

        // Check if the current number is prime
        if (isPrime(i))

            ans.push_back(i);
    }

    return ans;
}

int main() {

    int m = 1, n = 10;

    vector<int> ans = primeRange(m, n);

    for (auto &i : ans)
        cout << i << " ";

    return 0;
}
Java
// Java program to find the prime numbers
// between a given interval

class GfG {

    // Function to check if a number is prime
    static boolean isPrime(int n) {

        if (n <= 1)
            return false;

        for (int i = 2; i < n; i++) {
            if (n % i == 0)
                return false;
        }

        return true;
    }

    // Function to find all prime numbers in the range [m,
    // n]
    static int[] primeRange(int m, int n) {

        // Temporary array to store prime numbers
        int[] temp = new int[n - m + 1];
        int index = 0;

        // Iterate over each number in the range [m, n]
        for (int i = m; i <= n; i++) {

            // Check if the current number is prime
            if (isPrime(i))
                temp[index++] = i;
        }

        // Copy the prime numbers into a result array of
        // correct size
        int[] result = new int[index];
        System.arraycopy(temp, 0, result, 0, index);

        return result;
    }

    public static void main(String[] args) {

        int m = 1, n = 10;

        int[] ans = primeRange(m, n);

        for (int i : ans)
            System.out.print(i + " ");
    }
}
Python
# Python program to find the prime numbers
# between a given interval

# Function to check if a number is prime
def isPrime(n):

   
    if n <= 1:
        return False

    
    for i in range(2, n):
        if n % i == 0:
            return False  

    
    return True

# Function to find all prime numbers in 
# the range [m, n]
def primeRange(m, n):

    # Initialize a list to store prime numbers
    ans = []

    # Iterate over each number in the range [m, n]
    for i in range(m, n + 1):

        # Check if the current number is prime
        if isPrime(i):

          
            ans.append(i)

    
    return ans


if __name__ == "__main__":
   
    m, n = 1, 10
    ans = primeRange(m, n)
    print(" ".join(map(str, ans)))
C#
// C# program to find the prime numbers
// between a given interval

using System;

class GfG {

    // Function to check if a number is prime
    static bool isPrime(int n) {

        if (n <= 1)
            return false;

        for (int i = 2; i < n; i++) {
            if (n % i == 0)
                return false;
        }

        return true;
    }

    // Function to find all prime numbers in the range [m,
    // n]
    static int[] primeRange(int m, int n) {

        // Temporary array to store prime numbers
        int[] temp = new int[n - m + 1];
        int index = 0;

        // Iterate over each number in the range [m, n]
        for (int i = m; i <= n; i++) {

            // Check if the current number is prime
            if (isPrime(i))
                temp[index++] = i;
        }

        // Create result array of correct size
        int[] result = new int[index];
        Array.Copy(temp, result, index);

        return result;
    }

    static void Main(string[] args) {

        int m = 1, n = 10;

        int[] ans = primeRange(m, n);

        foreach(int i in ans) Console.Write(i + " ");
    }
}
Javascript
// JavaScript program to find the prime numbers
// between a given interval

// Function to check if a number is prime
function isPrime(n) {

    if (n <= 1)
        return false;

    for (let i = 2; i < n; i++) {
        if (n % i === 0)
            return false;
    }

    return true;
}

// Function to find all prime numbers in the range [m, n]
function primeRange(m, n) {

    // Initialize an array to store prime numbers
    let ans = [];

    // Iterate over each number in the range [m, n]
    for (let i = m; i <= n; i++) {

        // Check if the current number is prime
        if (isPrime(i))

            ans.push(i);
    }

    return ans;
}

let m = 1, n = 10;

let ans = primeRange(m, n);

console.log(ans.join(" "));

Output
2 3 5 7 

[Optimised Approach] Trial Division Method – O(n*sqrt(n)) Time and O(1) Space

The idea is similar to previous approach but we check if a number if prime or not in sqrt(i) time because we just check for factors from number 2 to sqrt(i). For more details Please refer to Check for Prime Number.

C++
// C++ program to find the prime numbers
// between a given interval
#include <bits/stdc++.h>
using namespace std;

bool isPrime(int n) {

    if (n <= 1)
        return false;

    if (n == 2)
        return true;

    // Numbers divisible by 2 are not prime
    if (n % 2 == 0)
        return false;

    for (int i = 3; i * i <= n; i += 2) {

        // If n is divisible by any odd number
        // in this range, it is not a prime number
        if (n % i == 0)
            return false;
    }

    return true;
}

// Function to find all prime numbers in the range [m, n]
vector<int> primeRange(int m, int n) {

    vector<int> ans;

    for (int i = m; i <= n; i++) {

        // Check if the current number is prime
        if (isPrime(i))

            ans.push_back(i);
    }

    return ans;
}

int main() {

    int m = 1, n = 10;

    vector<int> ans = primeRange(m, n);

    for (auto &i : ans)
        cout << i << " ";

    return 0;
}
Java
// Java program to find the prime numbers
// between a given interval
class GfG {

    // Function to check if a number is prime
    static boolean isPrime(int n) {

        if (n <= 1)
            return false;

        if (n == 2)
            return true;

        // Numbers divisible by 2 are not prime
        if (n % 2 == 0)
            return false;

        for (int i = 3; i * i <= n; i += 2) {
          
            // If n is divisible by any odd number
            // in this range, it is not a prime number
            if (n % i == 0)
                return false;
        }

        return true;
    }

    // Function to find all prime numbers in the range [m,
    // n]
    static int[] primeRange(int m, int n) {

        // Temporary array to store prime numbers
        int[] temp = new int[n - m + 1];
        int index = 0;

        // Iterate over each number in the range [m, n]
        for (int i = m; i <= n; i++) {

            // Check if the current number is prime
            if (isPrime(i)) {
                temp[index++] = i;
            }
        }

        // Create result array with the exact size
        int[] result = new int[index];
        System.arraycopy(temp, 0, result, 0, index);

        return result;
    }

    public static void main(String[] args) {

        int m = 1, n = 10;

        int[] ans = primeRange(m, n);

        for (int num : ans) {
            System.out.print(num + " ");
        }
    }
}
Python
# Python program to find the prime numbers
# between a given interval

# Function to check if a number is prime
def isPrime(n):
    if n <= 1:
        return False

    if n == 2:
        return True

    # Numbers divisible by 2 are not prime
    if n % 2 == 0:
        return False

    # Check for factors from 3 to sqrt(n)
    for i in range(3, int(n**0.5) + 1, 2):
        if n % i == 0:
            return False

    return True

# Function to find all prime numbers in the range [m, n]
def primeRange(m, n):
    ans = []

    # Iterate over each number in the range [m, n]
    for i in range(m, n + 1):
      
        # Check if the current number is prime
        if isPrime(i):
            ans.append(i)

    return ans

if __name__ == "__main__":

    m, n = 1, 10
    ans = primeRange(m, n)
    print(" ".join(map(str, ans)))
C#
// C# program to find the prime numbers
// between a given interval
using System;
using System.Collections.Generic;

class GfG {

    // Function to check if a number is prime
    static bool isPrime(int n) {

        if (n <= 1)
            return false;

        if (n == 2)
            return true;

        // Numbers divisible by 2 are not prime
        if (n % 2 == 0)
            return false;

        for (int i = 3; i * i <= n; i += 2) {

            if (n % i == 0)
                return false;
        }

        return true;
    }

    static int[] primeRange(int m, int n) {

        // Temporary array to store prime numbers
        int[] temp = new int[n - m + 1];
        int index = 0;

        // Iterate over each number in the range [m, n]
        for (int i = m; i <= n; i++) {

            // Check if the current number is prime
            if (isPrime(i))
                temp[index++] = i;
        }

        // Create result array of correct size
        int[] result = new int[index];
        Array.Copy(temp, result, index);

        return result;
    }

    static void Main(string[] args) {

        int m = 1, n = 10;
        int[] ans = primeRange(m, n);
        foreach(int i in ans) Console.Write(i + " ");
    }
}
Javascript
// JavaScript program to find the prime numbers
// between a given interval

// Function to check if a number is prime
function isPrime(n) {

    if (n <= 1)
        return false;

    if (n === 2)
        return true;

    if (n % 2 === 0)
        return false;

    for (let i = 3; i * i <= n; i += 2) {

        if (n % i === 0)
            return false;
    }

    return true;
}

// Function to find all prime numbers in the range [m, n]
function primeRange(m, n) {

    const ans = [];

    for (let i = m; i <= n; i++) {

        // Check if the current number is prime
        if (isPrime(i))

            ans.push(i);
    }

    return ans;
}

// driver code
const m = 1, n = 10;
const ans = primeRange(m, n);
console.log(ans.join(" "));

Output
2 3 5 7 

[Expected Approach] Using Sieve of Eratosthenes Method – O(nloglogn) Time and O(n) Space

To find all prime numbers in a given range [m, n], first implement the Sieve of Eratosthenes Method to mark non-prime numbers up to n. Create a boolean array prime[0..n] and initialize all entries as true, then mark prime[0] and prime[1] as false, since 0 and 1 are not prime numbers. Starting from p = 2, for each number p, mark all multiples of p greater than or equal to p*p as false (composite). After this step, all numbers marked as true are prime. Finally, iterate through the range [m, n] and collect all numbers that are still marked as true, which are the prime numbers between m and n.

C++
// C++ program to find the prime numbers
// between a given interval
#include <bits/stdc++.h>
using namespace std;

// Function to implement the
// Sieve of Eratosthenes to find primes up to 'n'
vector<bool> sieveOfEratosthenes(int n) {

    // Create a boolean array "prime[0..n]"
    // and initialize all entries as true.
    // A value in prime[i] will be false
    // if 'i' is not prime, otherwise true.
    vector<bool> prime(n + 1, true);

    // Mark 0 and 1 as non-prime
    prime[0] = false;
    prime[1] = false;

    // Loop through numbers from 2 to sqrt(n)
    // to mark their multiples as non-prime
    for (int p = 2; p * p <= n; p++) {

        // If prime[p] is still true, it means 'p' is prime
        if (prime[p] == true) {
          
            // Mark all multiples of p greater
            // than or equal to p^2 as non-prime
            // Numbers less than p^2 would
            // have already been marked as non-prime
            for (int i = p * p; i <= n; i += p)
                prime[i] = false;
        }
    }

    return prime;
}

// Function to find all prime numbers in the range [m, n]
vector<int> primeRange(int m, int n) {

    // Get the boolean array representing prime 
      // numbers up to n
    vector<bool> isPrime = sieveOfEratosthenes(n);
    vector<int> ans;

    for (int i = m; i <= n; i++) {

        // If 'i' is prime, add it to the result list
        if (isPrime[i])
            ans.push_back(i);
    }

    return ans;
}

int main() {

    int m = 1, n = 10;

    vector<int> ans = primeRange(m, n);

    for (auto &i : ans)
        cout << i << " ";

    return 0;
}
Java
// Java program to find the prime numbers
// between a given interval
import java.util.*;

class GfG {

    // Function to implement the
    // Sieve of Eratosthenes to find primes up to 'n'
    static boolean[] sieveOfEratosthenes(int n) {

        // Create a boolean array "prime[0..n]"
        // and initialize all entries as true.
        // A value in prime[i] will be false
        // if 'i' is not prime, otherwise true.
        boolean[] prime = new boolean[n + 1];
        Arrays.fill(prime, true);

        // Mark 0 and 1 as non-prime
        prime[0] = false;
        prime[1] = false;

        // Loop through numbers from 2 to sqrt(n)
        // to mark their multiples as non-prime
        for (int p = 2; p * p <= n; p++) {

            // If prime[p] is still true, it means 'p' is
            // prime
            if (prime[p]) {
              
                // Mark all multiples of p greater
                // than or equal to p^2 as non-prime
                // Numbers less than p^2 would
                // have already been marked as non-prime
                for (int i = p * p; i <= n; i += p)
                    prime[i] = false;
            }
        }

        return prime;
    }

    static int[] primeRange(int m, int n) {

        // Get the boolean array representing prime numbers
        // up to n
        boolean[] isPrime = sieveOfEratosthenes(n);

        // Count the number of primes in the range [m, n]
        int count = 0;
        for (int i = m; i <= n; i++) {
            if (isPrime[i])
                count++;
        }

        // Create an array to store the prime numbers
        int[] ans = new int[count];
        int index = 0;

        // Loop through the range [m, n] and collect all
        // prime numbers
        for (int i = m; i <= n; i++) {
            if (isPrime[i]) {
                ans[index++] = i;
            }
        }

        return ans;
    }

    public static void main(String[] args) {

        int m = 1, n = 10;
        int[] ans = primeRange(m, n);

        for (int i : ans)
            System.out.print(i + " ");
    }
}
Python
# Python program to find the prime numbers 
# between a given interval

# Function to implement the 
# Sieve of Eratosthenes to find primes up to 'n'
def sieveOfEratosthenes(n):

    # Create a boolean array "prime[0..n]" 
    # and initialize all entries as true.
    # A value in prime[i] will be false 
    # if 'i' is not prime, otherwise true.
    prime = [True] * (n + 1)
    
    # Mark 0 and 1 as non-prime
    prime[0] = False
    prime[1] = False

    # Loop through numbers from 2 to sqrt(n) 
    # to mark their multiples as non-prime
    for p in range(2, int(n**0.5) + 1):

        # If prime[p] is still true, it means 'p' is prime
        if prime[p] == True:
            # Mark all multiples of p greater 
            # than or equal to p^2 as non-prime
            # Numbers less than p^2 would 
            # have already been marked as non-prime
            for i in range(p * p, n + 1, p):
                prime[i] = False

    return prime

# Function to find all prime numbers in the range [m, n]
def primeRange(m, n):
  
    # Get the boolean array representing prime
    # numbers up to n
    isPrime = sieveOfEratosthenes(n)
    ans = []

    # Loop through the range [m, n] and collect 
    # all prime numbers
    for i in range(m, n + 1):
      
        # If 'i' is prime, add it to the result list
        if isPrime[i]:
            ans.append(i)

    return ans

m, n = 1, 10

ans = primeRange(m, n)

for i in ans:
    print(i, end=" ")
C#
// C# program to find the prime numbers
// between a given interval
using System;

class GfG {

    // Function to implement the
    // Sieve of Eratosthenes to find primes up to 'n'
    static bool[] sieveOfEratosthenes(int n) {

        // Create a boolean array "prime[0..n]"
        // and initialize all entries as true.
        // A value in prime[i] will be false
        // if 'i' is not prime, otherwise true.
        bool[] prime = new bool[n + 1];
        for (int i = 0; i <= n; i++)
            prime[i] = true;

        // Mark 0 and 1 as non-prime
        prime[0] = false;
        prime[1] = false;

        // Loop through numbers from 2 to sqrt(n)
        // to mark their multiples as non-prime
        for (int p = 2; p * p <= n; p++) {

            // If prime[p] is still true, it means 'p' is
            // prime
            if (prime[p]) {
              
                // Mark all multiples of p greater
                // than or equal to p^2 as non-prime
                // Numbers less than p^2 would
                // have already been marked as non-prime
                for (int i = p * p; i <= n; i += p)
                    prime[i] = false;
            }
        }

        return prime;
    }

    // Function to find all prime numbers in the range [m,
    // n]
    static int[] primeRange(int m, int n) {

        // Get the boolean array representing prime numbers
        // up to n
        bool[] isPrime = sieveOfEratosthenes(n);

        // Count the number of primes in the range [m, n]
        int count = 0;
        for (int i = m; i <= n; i++) {
            if (isPrime[i])
                count++;
        }

        // Create an array to store the prime numbers
        int[] ans = new int[count];
        int index = 0;

        // Loop through the range [m, n] and collect all
        // prime numbers
        for (int i = m; i <= n; i++) {
            if (isPrime[i]) {
                ans[index++] = i;
            }
        }

        return ans;
    }

    static void Main() {

        int m = 1, n = 10;

        int[] ans = primeRange(m, n);

        foreach(int i in ans) Console.Write(i + " ");
    }
}
Javascript
// JavaScript program to find the prime numbers
// between a given interval

// Function to implement the
// Sieve of Eratosthenes to find primes up to 'n'
function sieveOfEratosthenes(n) {

    // Create a boolean array "prime[0..n]"
    // and initialize all entries as true.
    // A value in prime[i] will be false
    // if 'i' is not prime, otherwise true.
    let prime = new Array(n + 1).fill(true);

    // Mark 0 and 1 as non-prime
    prime[0] = false;
    prime[1] = false;

    // Loop through numbers from 2 to sqrt(n)
    // to mark their multiples as non-prime
    for (let p = 2; p * p <= n; p++) {

        // If prime[p] is still true, it means 'p' is prime
        if (prime[p] === true) {
        
            // Mark all multiples of p greater
            // than or equal to p^2 as non-prime
            // Numbers less than p^2 would
            // have already been marked as non-prime
            for (let i = p * p; i <= n; i += p)
                prime[i] = false;
        }
    }

    return prime;
}

// Function to find all prime numbers in
// the range [m, n]
function primeRange(m, n) {

    // Get the boolean array representing prime numbers up
    // to n
    let isPrime = sieveOfEratosthenes(n);
    let ans = [];

    // Loop through the range [m, n] and collect all prime
    // numbers
    for (let i = m; i <= n; i++) {

        // If 'i' is prime, add it to the result list
        if (isPrime[i])
            ans.push(i);
    }

    return ans;
}

let m = 1, n = 10;
let ans = primeRange(m, n);
console.log(ans.join(" "));

Output
2 3 5 7 


Next Article

Similar Reads

three90RightbarBannerImg