



'''simple docstring'''

import math
from collections.abc import Generator






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






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






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






def 		_snake_case		(					)			->						Union[str, Any]:







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


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




'''simple docstring'''

from __future__ import annotations






def 		_snake_case		(					_SCREAMING_SNAKE_CASE     :						list[int]							,		_SCREAMING_SNAKE_CASE     :						int							)			->						list[int]:







	"""simple docstring"""
	lowerCAmelCase    =	{}
	for index, val in enumerate(_SCREAMING_SNAKE_CASE							):
		lowerCAmelCase    =	target - val
		if compl in chk_map:
			return [chk_map[compl], index]
		lowerCAmelCase    =	index
	return []


if __name__ == "__main__":
				import doctest

				doctest.testmod()
				print(F'''{two_sum([2, 7, 11, 15], 9) = }''')