




from __future__ import annotations

import math
from itertools import permutations







def 		lowercase__ (		__A:						int					):





					'''simple docstring'''






					if 1 < number < 4:
										# 2 and 3 are primes
										return True
					elif number < 2 or number % 2 == 0 or number % 3 == 0:
										# Negatives, 0, 1, all even numbers, all multiples of 3 are not primes
										return False

					# All primes number are in format of 6k +/- 1
					for i in range(5				,int(math.sqrt(__A					) + 1					)				,6					):
										if number % i == 0 or number % (i + 2) == 0:
															return False
					return True







def 		lowercase__ (		__A:						int = 7					):





					'''simple docstring'''






					__magic_name__				:						List[Any]     				=				''''''.join(str(__A					) for i in range(1				,n + 1					)					)
					__magic_name__				:						List[str]     				=				[int(''''''.join(__A					)					) for i in permutations(__A				,__A					)]
					__magic_name__				:						Any     				=				[num for num in perm_list if is_prime(__A					)]
					return max(__A					) if pandigitals else 0


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









import math
from collections.abc import Generator







def 		lowercase__ (		__A:						int					):





					'''simple docstring'''






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







def 		lowercase__ (		__A:						int					):





					'''simple docstring'''






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







def 		lowercase__ (		__A:						int					):





					'''simple docstring'''






					__magic_name__				:						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):
										__magic_name__				:						str     				=				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 		lowercase__ (		):





					'''simple docstring'''






					from timeit import timeit

					__magic_name__				:						Dict     				=				'''from __main__ import slow_primes, primes, fast_primes'''
					print(timeit('''slow_primes(1_000_000_000_000)'''				,setup=__A				,number=1_0_0_0_0_0_0					)					)
					print(timeit('''primes(1_000_000_000_000)'''				,setup=__A				,number=1_0_0_0_0_0_0					)					)
					print(timeit('''fast_primes(1_000_000_000_000)'''				,setup=__A				,number=1_0_0_0_0_0_0					)					)


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



