'''simple docstring'''
def 			_UpperCamelCase			(  _a						:						int      ):




    """simple docstring"""



    __UpperCamelCase						:						Dict		     =	[True for i in range(n + 1      )]
    __UpperCamelCase						:						str		     =	[i - 1 for i in range(n + 1      )]
    __UpperCamelCase						:						Optional[Any]		     =	[]
    for i in range(2					,  n + 1      ):
        if is_prime[i]:
            primes.append(_A      )
        for j in range(0					,  len(_A      )      ):
            if i * primes[j] >= n:
                break
            __UpperCamelCase						:						Optional[int]		     =	False

            if i % primes[j] == 0:
                __UpperCamelCase						:						Any		     =	totients[i] * primes[j]
                break

            __UpperCamelCase						:						Any		     =	totients[i] * (primes[j] - 1)

    return totients


if __name__ == "__main__":
  import doctest

  doctest.testmod()






import math
from collections.abc import Generator




def        __UpperCamelCase     (      _A					:							int		)				->Generator[int, None, None]:



							"""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      ,  _A		):
																					if (i % j) == 0:
																												break
														else:
																					yield i




def        __UpperCamelCase     (      _A					:							int		)				->Generator[int, None, None]:



							"""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(_A		)		) + 1
														for j in range(2      ,  _A		):
																					if (i % j) == 0:
																												break
														else:
																					yield i




def        __UpperCamelCase     (      _A					:							int		)				->Generator[int, None, None]:



							"""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(_A		)		) + 1
														for j in range(3      ,  _A      ,  2		):
																					# As we removed the even numbers, we don't need them now
																					if (i % j) == 0:
																												break
														else:
																					yield i




def        __UpperCamelCase     (      )				->Dict:



							"""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=_A      ,  number=1000000		)		)
							print(timeit("""primes(1_000_000_000_000)"""      ,  setup=_A      ,  number=1000000		)		)
							print(timeit("""fast_primes(1_000_000_000_000)"""      ,  setup=_A      ,  number=1000000		)		)


if __name__ == "__main__":
	__A	:   Union[str, Any]	=					int(input('Calculate primes up to:\n>> ').strip())
	for ret in primes(number):
		print(ret)
	benchmark()
