diff --git a/src/prime.py b/src/prime.py
index eb284d3df6445c162664a5132ccd2f2863a7fc62..0315465a6f940ec43ff9b584cd7e551636922b85 100644
--- a/src/prime.py
+++ b/src/prime.py
@@ -1,9 +1,8 @@
-from math import *
-
-"""Check wether a number is prime or not
+def is_prime_number(number):
+	"""Check wether a number is prime or not
 		Bruteforcing method
-"""
-def isPrimeNumber(number):
+	"""
+	from math import floor, sqrt
 	if number == 1: 					# 1 is not prime
 		return False 
 	if number == 2:						# 2 is a prime number
@@ -17,3 +16,36 @@ def isPrimeNumber(number):
 	return True
 
 
+def is_probably_prime(n, k):
+	"""	Check wether a number is probably prime 
+		Miller Rabin Primality Test
+		V2
+	"""
+	from random import randint
+
+	if n == 1: 					# 1 is not prime
+		return False 
+	if n == 2:					# 2 is a prime n
+		return True
+	if not n & 0x01:			# even numbers are not prime
+		return False
+
+	# 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)
+
+	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
+