



import math
from collections.abc import Generator






def 						_lowerCAmelCase    (					__lowerCamelCase :  int  ):



 """simple docstring"""





 __SCREAMING_SNAKE_CASE							:     Generator							=						(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 						_lowerCAmelCase    (					__lowerCamelCase :  int  ):



 """simple docstring"""





 __SCREAMING_SNAKE_CASE							:     Generator							=						(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)
  __SCREAMING_SNAKE_CASE							:     str							=						int(math.sqrt(__lowerCamelCase  )  ) + 1
  for j in range(2		,						__lowerCamelCase  ):
   if (i % j) == 0:
    break
  else:
   yield i






def 						_lowerCAmelCase    (					__lowerCamelCase :  int  ):



 """simple docstring"""





 __SCREAMING_SNAKE_CASE							:     Generator							=						(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):
  __SCREAMING_SNAKE_CASE							:     List[Any]							=						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 						_lowerCAmelCase    (					):



 """simple docstring"""





 from timeit import timeit

 __SCREAMING_SNAKE_CASE							:     Union[str, Any]							=						"from __main__ import slow_primes, primes, fast_primes"
 print(timeit("slow_primes(1_000_000_000_000)"		,						setup=__lowerCamelCase		,						number=1000000  )  )
 print(timeit("primes(1_000_000_000_000)"		,						setup=__lowerCamelCase		,						number=1000000  )  )
 print(timeit("fast_primes(1_000_000_000_000)"		,						setup=__lowerCamelCase		,						number=1000000  )  )


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











def 						_lowerCAmelCase    (					__lowerCamelCase :  list  ):



 """simple docstring"""





 if len(__lowerCamelCase  ) <= 1:
  return data
 else:
  return [
      *quick_sort([e for e in data[1:] if e <= data[0]]  ),
      data[0],
      *quick_sort([e for e in data[1:] if e > data[0]]  ),
  ]


if __name__ == "__main__":
      import doctest

      doctest.testmod()






