diff --git a/src/exp_rapide.py b/src/exp_rapide.py
index 92255ae853d944537cb25936a3df657a5546f411..22d96f89784af8748dca0bc68abada1370cfa836 100644
--- a/src/exp_rapide.py
+++ b/src/exp_rapide.py
@@ -27,7 +27,6 @@ def exp_rapide(nb: int, exp: int, mod: int) -> int:
 	return out % mod
 
 
-
 if __name__ == '__main__':
 
 	u = 68393426
diff --git a/src/prime.py b/src/prime.py
index 57ed41c879cad1ed03dbed64c6f82526916952dc..71ce030039b5b7a8e8866f1b485f13720b51f182 100644
--- a/src/prime.py
+++ b/src/prime.py
@@ -15,38 +15,86 @@ def is_prime_number(number):
 			return False
 	return True
 
-def is_probably_prime(number):
+
+def is_probably_prime(n, k):
 	"""	Check wether a number is probably prime 
 		Miller Rabin Primality Test
-		FERMAT DIT a^(p−1) = 1 mod p.
-		SOURCES:
-		http://defeo.lu/in420/DM3%20-%20Test%20de%20Miller-Rabin
-		https://www.geeksforgeeks.org/primality-test-set-3-miller-rabin/
-		https://fr.wikipedia.org/wiki/Test_de_primalit%C3%A9_de_Miller-Rabin
+		V2
 	"""
-	if number == 1: 					# 1 is not prime
+	from random import randint
+
+	if n == 1: 					# 1 is not prime
 		return False 
-	if number == 2:						# 2 is a prime number
+	if n == 2:					# 2 is a prime n
 		return True
-	if number > 2 and number % 2 == 0:	# even numbers are not prime
+	if not n & 0x01:			# even numbers are not prime
 		return False
 
-	d = ((number - 1) & -(number - 1)).bit_length() - 1 # Get the number of witness we need
-	r = int((number - 1) / 2**d) # Rest after factors of 2
-	for i in range(5):
-		if ( test_rabin(number, r, d)) == False:
-			return False
-	return True # PASSED D WITNESSES - PROBABLY PRIME
+	# Get the number of witness we need
+	# Number of trailing zeroes in the binary representation of n-1
+	# n - 1 = 2**n * n
+	s = ((n - 1) & -(n - 1)).bit_length() - 1 
+	d = int((n - 1) / 2**s)
 
-# CHECK A RANDOM NUMBER AS WITNESS
-def test_rabin(number, r, d):
-	from math import log2
-	from random import randint
+	for i in range(1, n):
+		x = 2 + randint(1, n-4)
+		y = pow(x, d, n)
+		if y != 1 and y != n - 1:
+			for r in range(1, s - 1):
+				y = pow(y, 2, n)
+				if y == n - 1:
+					break
+			
+			if y != 1:
+				return False
+	return True # Probably Prime
+
+
+
+# def is_probably_prime(number):
+# 	"""	Check wether a number is probably prime 
+# 		Miller Rabin Primality Test
+# 		FERMAT DIT a^(p−1) = 1 mod p.
+# 		SOURCES:
+# 		http://defeo.lu/in420/DM3%20-%20Test%20de%20Miller-Rabin
+# 		https://www.geeksforgeeks.org/primality-test-set-3-miller-rabin/
+# 		https://fr.wikipedia.org/wiki/Test_de_primalit%C3%A9_de_Miller-Rabin
+# 	"""
+# 	if number == 1: 					# 1 is not prime
+# 		return False 
+# 	if number == 2:						# 2 is a prime number
+# 		return True
+# 	if number > 2 and number % 2 == 0:	# even numbers are not prime
+# 		return False
+
+# 	d = ((number - 1) & -(number - 1)).bit_length() - 1 # Get the number of witness we need
+# 	r = int((number - 1) / 2**d) # Rest after factors of 2
+# 	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
+# def test_rabin(number, r, d):
+# 	from exp_rapide import power
+# 	from math import log2
+# 	from random import randint
+
+# 	a = 2 + randint(1, number-4) # Get random a in 3..p-2 > not smaller than 4
+# 	# for i in range(0, d):
+# 	# 	tested = power(a, (r * power(2, i, number)), number) #a**(r*2**i) % number
+# 	# 	if tested == 1 or tested == number-1:
+# 	# # 		return True # a is not witness of Miller-Rabin
+
+# 	tested = power(a, r, number)
+# 	if tested == 1 or tested == number-1:
+# 		return True # a is not witness of Miller-Rabin
 
-	a = randint(3, number-2) # Get random a in 3..p-2
-	for i in range(0, d):
-		tested = a**(r*2**i) % number
-		if tested == 1 or tested == number-1:
-			return True # a is not witness of Miller-Rabin
+# 	while (d != number - 1):
+# 		tested = (tested * tested) % number;
+# 		d *= 2;
+# 		if tested == 1 or tested == number-1:
+# 			return True # a is not witness of Miller-Rabin
 
-	return False # Number is not prime
\ No newline at end of file
+# 	return False # Number is not prime
+# 
\ No newline at end of file