From aae1593d43ba18c7f15a6a31ef4240bff15e1906 Mon Sep 17 00:00:00 2001 From: jonas <jonas.stirnemann@etu.hesge.ch> Date: Tue, 21 Dec 2021 13:02:54 +0100 Subject: [PATCH] Primability without rapid expo --- src/prime.py | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/prime.py b/src/prime.py index d8e1d53..57ed41c 100644 --- a/src/prime.py +++ b/src/prime.py @@ -15,7 +15,7 @@ def is_prime_number(number): return False return True -def is_porbably_prime(number): +def is_probably_prime(number): """ Check wether a number is probably prime Miller Rabin Primality Test FERMAT DIT a^(p−1) = 1 mod p. @@ -32,26 +32,21 @@ def is_porbably_prime(number): return False 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 - print(r) - for i in range(d): + for i in range(5): if ( test_rabin(number, r, d)) == False: return False return True # PASSED D WITNESSES - PROBABLY PRIME # CHECK A RANDOM NUMBER AS WITNESS -# d is the number def test_rabin(number, r, d): from math import log2 from random import randint a = randint(3, number-2) # Get random a in 3..p-2 - 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: - return true # a is not witness of Miller-Rabin + return True # a is not witness of Miller-Rabin return False # Number is not prime \ No newline at end of file -- GitLab