askvity

How to calculate prime numbers between two numbers?

Published in Prime Number Calculation 3 mins read

To calculate prime numbers between two given numbers, you essentially need to check each number within that range for divisibility. A prime number is a number greater than 1 that has no positive divisors other than 1 and itself. Here's a breakdown of the process:

Algorithm for Finding Prime Numbers in a Range

  1. Define the Range: Determine the starting and ending numbers (inclusive) for your search. Let's call them start and end.

  2. Iterate Through the Range: Loop through each number num from start to end.

  3. Check for Primality: For each num, check if it's a prime number.

    • A number less than 2 is not prime.
    • Iterate from 2 up to the square root of num. You only need to check divisibility up to the square root because if a number has a divisor larger than its square root, it must also have a divisor smaller than its square root. This optimization significantly improves efficiency. The reference mentions you don't need to check factors from n/2+1 to n-1, which, while correct, is further optimized by checking only up to the square root.
    • If num is divisible by any number in this range, it's not prime.
  4. Collect Prime Numbers: If a number passes the primality test (i.e., it's not divisible by any number other than 1 and itself), add it to a list of prime numbers.

Example

Let's find prime numbers between 10 and 20.

Number (num) Check for Divisibility (from 2 to sqrt(num)) Prime?
10 2 (divisible), 3 No
11 2, 3 Yes
12 2 (divisible), 3 No
13 2, 3 Yes
14 2 (divisible), 3 No
15 2, 3 (divisible) No
16 2 (divisible), 3, 4 No
17 2, 3, 4 Yes
18 2 (divisible), 3, 4 No
19 2, 3, 4 Yes
20 2 (divisible), 3, 4 No

Therefore, the prime numbers between 10 and 20 are 11, 13, 17, and 19.

Code Example (Python)

import math

def is_prime(num):
    if num < 2:
        return False
    for i in range(2, int(math.sqrt(num)) + 1):
        if num % i == 0:
            return False
    return True

def find_primes_in_range(start, end):
    primes = []
    for num in range(start, end + 1):
        if is_prime(num):
            primes.append(num)
    return primes

start_range = 10
end_range = 20
prime_numbers = find_primes_in_range(start_range, end_range)
print(f"Prime numbers between {start_range} and {end_range} are: {prime_numbers}")

This code efficiently identifies prime numbers within a specified range by optimizing the divisibility checks.

Related Articles