Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- g = random.SystemRandom()
- lprimes= [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61,67,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541]
- def decomp(n):
- q = n-1
- s = 0
- while not q&1:
- s+=1
- q= q//2
- return s,q
- def trial(n):
- for i in lprimes:
- x= n%i
- if not x:
- return False
- return True
- def mrt(n,t=7):
- if n&1:
- n=n
- else:
- n=n+1
- if trial(n):
- s,q = decomp(n)
- for _ in range(t):
- a=random.randrange(2,n-1)
- y = pow(a,q,n)
- if y == 1 or y == -1:
- return n
- else:
- if s>1:
- for i in range(1,s):
- if pow(a,(2**i)*q,n) == -1:
- return n
- return False
- if __name__ == "__main__":
- while 1:
- a = random.randrange(10**255,10**256)
- x = mrt(a)
- if x:
- print(x)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement