input: def generate_prime_numbers(n: int) -> List[int]:
      """ Generate a sequence of prime numbers up to a given number n using the Sieve of Eratosthenes algorithm.
      >>> generate_prime_numbers(10)
      [2, 3, 5, 7]
      >>> generate_prime_numbers(20)
      [2, 3, 5, 7, 11, 13, 17, 19]
      """
output:     primes = []
      is_prime = [True] * (n + 1)
      p = 2
      while p * p <= n:
          if is_prime[p]:
              for i in range(p * p, n + 1, p):
                  is_prime[i] = False
          p += 1
      for p in range(2, n + 1):
          if is_prime[p]:
              primes.append(p)
      return primes