



"""simple docstring"""







from __future__ import annotations

from random import randrange


def  __SCREAMING_SNAKE_CASE (  __UpperCAmelCase      ):
		if len(__UpperCAmelCase      ) < 2:
				return collection
		_lowercase				: List[Any]     =   randrange(len(__UpperCAmelCase      )      )  # Use random element as pivot
		_lowercase				: int     =   collection[pivot_index]
		_lowercase				: list[int]     =   []  # All elements greater than pivot
		_lowercase				: list[int]     =   []  # All elements less than or equal to pivot

		for element in collection[:pivot_index]:
				(greater if element > pivot else lesser).append(__UpperCAmelCase      )

		for element in collection[pivot_index + 1 :]:
				(greater if element > pivot else lesser).append(__UpperCAmelCase      )

		return [*quick_sort(__UpperCAmelCase      ), pivot, *quick_sort(__UpperCAmelCase      )]


if __name__ == "__main__":
		UpperCAmelCase:  Optional[Any]			     =				input("""Enter numbers separated by a comma:\n""").strip()
		UpperCAmelCase:  Tuple			     =				[int(item) for item in user_input.split(""",""")]
		print(quick_sort(unsorted))








"""simple docstring"""







import math
from collections.abc import Generator


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


def  __SCREAMING_SNAKE_CASE (  __UpperCAmelCase      ):
		_lowercase				: 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)
				_lowercase				: Union[str, Any]     =   int(math.sqrt(__UpperCAmelCase      )      ) + 1
				for j in range(2   ,				__UpperCAmelCase      ):
						if (i % j) == 0:
								break
				else:
						yield i


def  __SCREAMING_SNAKE_CASE (  __UpperCAmelCase      ):
		_lowercase				: 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):
				_lowercase				: str     =   int(math.sqrt(__UpperCAmelCase      )      ) + 1
				for j in range(3   ,				__UpperCAmelCase   ,				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

		_lowercase				: Tuple     =   """from __main__ import slow_primes, primes, fast_primes"""
		print(timeit("""slow_primes(1_000_000_000_000)"""   ,				setup=__UpperCAmelCase   ,				number=1000000      )      )
		print(timeit("""primes(1_000_000_000_000)"""   ,				setup=__UpperCAmelCase   ,				number=1000000      )      )
		print(timeit("""fast_primes(1_000_000_000_000)"""   ,				setup=__UpperCAmelCase   ,				number=1000000      )      )


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



