import math
from collections.abc import Generator


def SCREAMING_SNAKE_CASE					(  lowercase_:						int					):
       _UpperCamelCase  :							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		,    lowercase_					):
                     if (i % j) == 0:
                            break
              else:
                     yield i


def SCREAMING_SNAKE_CASE					(  lowercase_:						int					):
       _UpperCamelCase  :							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)
              _UpperCamelCase  :							Dict	    =	int(math.sqrt(lowercase_					)					) + 1
              for j in range(2		,    lowercase_					):
                     if (i % j) == 0:
                            break
              else:
                     yield i


def SCREAMING_SNAKE_CASE					(  lowercase_:						int					):
       _UpperCamelCase  :							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):
              _UpperCamelCase  :							Any	    =	int(math.sqrt(lowercase_					)					) + 1
              for j in range(3		,    lowercase_		,    2					):
                     # As we removed the even numbers, we don't need them now
                     if (i % j) == 0:
                            break
              else:
                     yield i


def SCREAMING_SNAKE_CASE					(  ):
       from timeit import timeit

       _UpperCamelCase  :							int	    =	'from __main__ import slow_primes, primes, fast_primes'
       print(timeit('slow_primes(1_000_000_000_000)'		,    setup=lowercase_		,    number=1000000					)					)
       print(timeit('primes(1_000_000_000_000)'		,    setup=lowercase_		,    number=1000000					)					)
       print(timeit('fast_primes(1_000_000_000_000)'		,    setup=lowercase_		,    number=1000000					)					)


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




def SCREAMING_SNAKE_CASE					(  lowercase_:						int					):
       return n * (2 * n - 1)


def SCREAMING_SNAKE_CASE					(  lowercase_:						int					):
       _UpperCamelCase  :							str	    =	(1 + 24 * n) ** 0.5
       return ((1 + root) / 6) % 1 == 0


def SCREAMING_SNAKE_CASE					(  lowercase_:						int = 144					):
       _UpperCamelCase  :							Optional[Any]	    =	start
       _UpperCamelCase  :							List[str]	    =	hexagonal_num(lowercase_					)
       while not is_pentagonal(lowercase_					):
              n += 1
              _UpperCamelCase  :							Optional[int]	    =	hexagonal_num(lowercase_					)
       return num


if __name__ == "__main__":
 print(f'''{solution()} = ''')



