import random
from.binary_exp_mod import bin_exp_mod
defis_prime_big(n, prec=1000):if n <2:returnFalseif n %2==0:return n ==2# this means n is odd
d = n -1
exp =0while d %2==0:
d /=2
exp +=1# n - 1=d*(2**exp)
count =0while count < prec:
a = random.randint(2, n -1)
b = bin_exp_mod(a, d, n)if b !=1:
flag =Truefor i inrange(exp):if b == n -1:
flag =Falsebreak
b = b * b
b %= n
if flag:returnFalse
count +=1returnTrueif __name__ =="__main__":
n =abs(int(input("Enter bound : ").strip()))print("Here's the list of primes:")print(", ".join(str(i)for i inrange(n +1)if is_prime_big(i)))