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

Update prime.py

parent ff629db3
No related branches found
No related tags found
No related merge requests found
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment