input: Write a function to print out the first `n` prime numbers using the Sieve of Eratosthenes algorithm.
  assert sieve_of_eratosthenes(5)==[2, 3, 5, 7, 11]
  assert sieve_of_eratosthenes(1)==[2]
  assert sieve_of_eratosthenes(0)==[]
output: def sieve_of_eratosthenes(n):
      if n == 0:
          return []
      limit = 2
      primes = []
      while len(primes) < n:
          limit *= 2
          sieve = [True] * limit
          sieve[0] = sieve[1] = False
          for i in range(2, int(limit**0.5) + 1):
              if sieve[i]:
                  for j in range(i*i, limit, i):
                      sieve[j] = False
          primes = [i for i, is_prime in enumerate(sieve) if is_prime]
      return primes[:n]