Advertisement
Guest User

Untitled

a guest
Nov 1st, 2014
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.13 KB | None | 0 0
  1. def miller_rabin(n,p):
  2.         small_primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]
  3.         if n < 2: return False
  4.         for p in small_primes:
  5.                 if n < p * p: return True
  6.                 if n % p == 0: return False
  7.         r, s = 0, n - 1
  8.         while s % 2 == 0:
  9.                 r += 1
  10.                 s //= 2
  11.         for _ in range(p):
  12.                 a = randrange(2, n - 1)
  13.                 x = pow(a, s, n)
  14.                 if x == 1 or x == n - 1:
  15.                         continue
  16.                 for _ in range(r - 1):
  17.                         x = pow(x, 2, n)
  18.                         if x == n - 1:
  19.                                 break
  20.                 else:
  21.                         return False
  22.         return True
  23.  
  24. n=13
  25. p=80
  26. print "miller_rabin(",n,",",p,")=",miller_rabin(n,p)
  27.  
  28. def generate_prime(k,p):
  29. #       MR = False
  30. #       while(MR == False):
  31. #               s = random.randint(0, 2**k -1)
  32. #               MR = miller_rabin(s,p)
  33.         return 2
  34.  
  35. k=100
  36. p=80
  37. prime=generate_prime(k,p)
  38. print "generate_prime(",k,",",p,")=",prime
  39. print "nombre de bits:", floor(log(prime,2))+1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement