Advertisement
Guest User

Untitled

a guest
May 13th, 2013
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.71 KB | None | 0 0
  1. import random, sys
  2.  
  3. def miller_rabin_pass(a, s, d, n):
  4.     a_to_power = pow(a, d, n)
  5.     if a_to_power == 1:
  6.         return True
  7.     for i in xrange(s-1):
  8.         if a_to_power == n - 1:
  9.             return True
  10.         a_to_power = (a_to_power * a_to_power) % n
  11.     return a_to_power == n - 1
  12.  
  13.  
  14. def miller_rabin(n):
  15.     d = n - 1
  16.     s = 0
  17.     while d % 2 == 0:
  18.         d >>= 1
  19.         s += 1
  20.    
  21.     for repeat in xrange(20):
  22.         a = 0
  23.         while a == 0:
  24.             a = random.randrange(n)
  25.         if not miller_rabin_pass(a, s, d, n):
  26.             return False
  27.     return True
  28.  
  29. test = input();
  30. for i in range(test):
  31.     n = input()
  32.     while(miller_rabin(n) == False):
  33.         n -= 1
  34.     print n
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement