Skip to content
Snippets Groups Projects
Commit aae1593d authored by jonas.stirnema's avatar jonas.stirnema
Browse files

Primability without rapid expo

parent e13c7661
No related branches found
No related tags found
No related merge requests found
...@@ -15,7 +15,7 @@ def is_prime_number(number): ...@@ -15,7 +15,7 @@ def is_prime_number(number):
return False return False
return True return True
def is_porbably_prime(number): def is_probably_prime(number):
""" Check wether a number is probably prime """ Check wether a number is probably prime
Miller Rabin Primality Test Miller Rabin Primality Test
FERMAT DIT a^(p−1) = 1 mod p. FERMAT DIT a^(p−1) = 1 mod p.
...@@ -32,26 +32,21 @@ def is_porbably_prime(number): ...@@ -32,26 +32,21 @@ def is_porbably_prime(number):
return False return False
d = ((number - 1) & -(number - 1)).bit_length() - 1 # Get the number of witness we need d = ((number - 1) & -(number - 1)).bit_length() - 1 # Get the number of witness we need
print(d)
r = int((number - 1) / 2**d) # Rest after factors of 2 r = int((number - 1) / 2**d) # Rest after factors of 2
print(r) for i in range(5):
for i in range(d):
if ( test_rabin(number, r, d)) == False: if ( test_rabin(number, r, d)) == False:
return False return False
return True # PASSED D WITNESSES - PROBABLY PRIME return True # PASSED D WITNESSES - PROBABLY PRIME
# CHECK A RANDOM NUMBER AS WITNESS # CHECK A RANDOM NUMBER AS WITNESS
# d is the number
def test_rabin(number, r, d): def test_rabin(number, r, d):
from math import log2 from math import log2
from random import randint from random import randint
a = randint(3, number-2) # Get random a in 3..p-2 a = randint(3, number-2) # Get random a in 3..p-2
for i in range(0, d): for i in range(0, d):
tested = a^(r*2**i) % number tested = a**(r*2**i) % number
if tested == 1 or tested == number-1: if tested == 1 or tested == number-1:
return true # a is not witness of Miller-Rabin return True # a is not witness of Miller-Rabin
return False # Number is not prime return False # Number is not prime
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment