




import math
from collections.abc import Generator
def 		a_       (   __lowerCAmelCase							):

  '''simple docstring'''





  lowerCAmelCase__								=			(i for i in range(1      ,   (max_n + 1)							))
  for i in (n for n in numbers if n > 1):
    for j in range(2      ,   __lowerCAmelCase							):
      if (i % j) == 0:
        break
    else:
      yield i
def 		a_       (   __lowerCAmelCase							):

  '''simple docstring'''





  lowerCAmelCase__								=			(i for i in range(1      ,   (max_n + 1)							))
  for i in (n for n in numbers if n > 1):
    # only need to check for factors up to sqrt(i)
    lowerCAmelCase__								=			int(math.sqrt(__lowerCAmelCase							)							) + 1
    for j in range(2      ,   __lowerCAmelCase							):
      if (i % j) == 0:
        break
    else:
      yield i
def 		a_       (   __lowerCAmelCase							):

  '''simple docstring'''





  lowerCAmelCase__								=			(i for i in range(1      ,   (max_n + 1)      ,   2							))
  # It's useless to test even numbers as they will not be prime
  if max_n > 2:
    yield 2  # Because 2 will not be tested, it's necessary to yield it now
  for i in (n for n in numbers if n > 1):
    lowerCAmelCase__								=			int(math.sqrt(__lowerCAmelCase							)							) + 1
    for j in range(3      ,   __lowerCAmelCase      ,   2							):
      # As we removed the even numbers, we don't need them now
      if (i % j) == 0:
        break
    else:
      yield i
def 		a_       (   ):

  '''simple docstring'''





  from timeit import timeit

  lowerCAmelCase__								=			'''from __main__ import slow_primes, primes, fast_primes'''
  print(timeit('''slow_primes(1_000_000_000_000)'''      ,   setup=__lowerCAmelCase      ,   number=1_00_00_00							)							)
  print(timeit('''primes(1_000_000_000_000)'''      ,   setup=__lowerCAmelCase      ,   number=1_00_00_00							)							)
  print(timeit('''fast_primes(1_000_000_000_000)'''      ,   setup=__lowerCAmelCase      ,   number=1_00_00_00							)							)


if __name__ == "__main__":
      __magic_name__     :     Dict  							=					int(input("""Calculate primes up to:\n>> """).strip())
      for ret in primes(number):
            print(ret)
      benchmark()







def 		a_       (   __lowerCAmelCase      ,   __lowerCAmelCase							):
  assert isinstance(__lowerCAmelCase      ,   __lowerCAmelCase							), F"""The input value of [set_a={set_a}] is not a set"""
  assert isinstance(__lowerCAmelCase      ,   __lowerCAmelCase							), F"""The input value of [set_b={set_b}] is not a set"""

  return {a + b for a in set_a for b in set_b}


if __name__ == "__main__":
      from doctest import testmod

      testmod()

