input:  
  from typing import List
  
  def sieve_of_eratosthenes(start: int, end: int) -> List[int]:
      """ Implement the Sieve of Eratosthenes algorithm to generate a list of prime numbers
      between two given numbers inclusive of the end value.
      >>> sieve_of_eratosthenes(1, 20)
      [2, 3, 5, 7, 11, 13, 17, 19]
      >>> sieve_of_eratosthenes(10, 50)
      [11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
      """
      prime = [True] * (end + 1)
      p = 2
      while p * p <= end:
          if prime[p]:
              for i in range(p * p, end + 1, p):
                  prime[i] = False
          p += 1
      prime_numbers = [p for p in range(start, end + 1) if prime[p]]
      return prime_numbers
  
output:     if start < 2:
          start = 2
      return [num for num in prime_numbers if num >= start]