





def      a    (   _lowercase :  int			,    _lowercase :  int							)  ->List[str]:






		if a < b:
				return gcd(__A			,    __A							)
		if a % b == 0:
				return b
		return gcd(__A			,    a % b							)

def      a    (   _lowercase :  int			,    _lowercase :  int			,    _lowercase :  int							)  ->Any:






		if y == 0:
				return 1
		UpperCamelCase__								=						power(__A			,    y // 2			,    __A							) % mod
		UpperCamelCase__								=						(temp * temp) % mod
		if y % 2 == 1:
				UpperCamelCase__								=						(temp * x) % mod
		return temp

def      a    (   _lowercase :  int							)  ->Optional[Any]:
		UpperCamelCase__								=						2
		while b < n:
				if gcd(__A			,    __A							) == 1 and power(__A			,    n - 1			,    __A							) != 1:
						return False
				b += 1
		return True


if __name__ == "__main__":
				__lowerCAmelCase 	=      int(input("Enter number: ").strip())
				if is_carmichael_number(number):
								print(f"""{number} is a Carmichael Number.""")
				else:
								print(f"""{number} is not a Carmichael Number.""")











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()



