




'''simple docstring'''







import random

from .binary_exp_mod import bin_exp_mod





def 						snake_case_							(_a	:							Union[str, Any]    ,   _a	:							List[Any]=1_0_0_0     ):
    if n < 2:
        return False

    if n % 2 == 0:
        return n == 2

    # this means n is odd
    UpperCAmelCase			       =		n - 1
    UpperCAmelCase			       =		0
    while d % 2 == 0:
        d /= 2
        exp += 1

    # n - 1=d*(2**exp)
    UpperCAmelCase			       =		0
    while count < prec:
        UpperCAmelCase			       =		random.randint(2    ,   n - 1     )
        UpperCAmelCase			       =		bin_exp_mod(_a    ,   _a    ,   _a     )
        if b != 1:
            UpperCAmelCase			       =		True
            for _ in range(_a     ):
                if b == n - 1:
                    UpperCAmelCase			       =		False
                    break
                UpperCAmelCase			       =		b * b
                b %= n
            if flag:
                return False
            count += 1
    return True


if __name__ == "__main__":
   A     =abs(int(input('Enter bound : ').strip()))
   print('Here\'s the list of primes:')
   print(', '.join(str(i) for i in range(n + 1) if is_prime_big(i)))











import math







def  _SCREAMING_SNAKE_CASE				(   a  )      ->      list[int]:
					__A	:						List[str]       =				[]
					__A	:						Any       =				2
					__A	:						Union[str, Any]       =				int(math.sqrt(a  )  )  # Size of every segment
					__A	:						Any       =				[True] * (end + 1)
					__A	:						List[Any]       =				[]

					while start <= end:
										if temp[start] is True:
															in_prime.append(a  )
															for i in range(start * start					,						end + 1					,						a  ):
																				__A	:						Optional[int]       =				False
										start += 1
					prime += in_prime

					__A	:						Any       =				end + 1
					__A	:						Any       =				min(2 * end					,						a  )

					while low <= n:
										__A	:						List[Any]       =				[True] * (high - low + 1)
										for each in in_prime:
															__A	:						List[str]       =				math.floor(low / each  ) * each
															if t < low:
																				t += each

															for j in range(a					,						high + 1					,						a  ):
																				__A	:						Optional[int]       =				False

										for j in range(len(a  )  ):
															if temp[j] is True:
																				prime.append(j + low  )

										__A	:						Optional[int]       =				high + 1
										__A	:						Tuple       =				min(high + end					,						a  )

					return prime




print(sieve(10**6))




