def random_prime(bits): min = 6074001000 << (bits-33) max = (1<<bits) - 1 while True: p = randint(min, max) if(is_prime(p)): return p
def smaller_closest_prime(x): if x < 3: return -100 # no smaller prime i = 1 while not mr.is_prime(x - i): i += 1 return (x - i)
def test_first_primes(self): primes = [2] for q in xrange(3, 10000, 2): s = int(ceil(sqrt(q))) prime = True for p in primes: if p > s: break if q % p == 0: prime = False break if prime: primes.append(q) for p in primes: self.assertTrue(miller_rabin.is_prime(p))
def generate_test_sequence( upper_bound): # the test sequence is 2p where p are prime numbers test_sequence = [ ] # the corresponding bit sequence (generated with skip) appeared to be random num = 1 index = 0 while index < upper_bound: print('-Generating test sequence:{}%'.format( round(index * 100 / upper_bound)), end='\r') num += 1 if mr.is_prime(num): test_sequence.append(num * 2) index += 1 print() print('test sequence generated') print() return test_sequence
# Projecteuler problem 058 # Answer: 26241 from miller_rabin import is_prime # Ulam spiral n = 1 diag_total = 1 diag_primes = 0 for i in range(2, 100000, 2): for j in range(0, 4): n += i diag_total += 1 if is_prime(n): diag_primes += 1 # print (i+1), diag_total, diag_primes, float(diag_primes)/diag_total, n if diag_primes*10 < diag_total: print "ans:", i+1 break
from miller_rabin import is_prime for i in range(3, 1000): if is_prime(i): print "%d \n" % i #i = 2 ** 2048 #while True: # if is_prime(i): # print "found prime ! %d " % i # break # else: # i = i - 1 # print "%d \n" % i
import miller_rabin as pt import math n = 600851475143 f = n # find largest odd factor while f % 2 == 0: f /= 2 # divide out smallest odd prime factor until f is 1 p = 3 while not f == 1: while (not pt.is_prime(p) or f % p != 0): p += 2 while f % p == 0: f /= p print(p)
def test_big_composite_integer(self): self.assertFalse(is_prime(exp_sqr(12456, 10)))
def test_composite_integer(self): self.assertFalse(is_prime(91))
def test_even_integer(self): self.assertFalse(is_prime(8))
def test_small_integer(self): self.assertTrue(is_prime(5))
def test_one(self): self.assertFalse(is_prime(1))
for i in range(len(primes)): p = primes[i] count = 0 while n % p == 0: n /= p count += 1 res.append(count) return res n = 20 # find all primes <= n primes = [2] for p in range(3, n + 1, 2): if pt.is_prime(p): primes.append(p) # initialize the multiplicities multiplicities = [0 for p in primes] # find multiplicities of all the primes for i in range(1, n + 1): mults = get_multiplicities(primes, i) for j in range(len(mults)): if mults[j] > multiplicities[j]: multiplicities[j] = mults[j] print(primes) print(multiplicities)
def larger_closest_prime(x): i = 1 while not mr.is_prime(x + i): i += 1 return (x + i)
def test_known_composites(self): for n in [4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22, 100]: self.assertFalse(miller_rabin.is_prime(n))
def test_known_primes(self): for p in [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 82104551, 452784427, 46897875786625702576864112692857487051, 16924980224899166400812497777709246533, 2345025074052479518600795136681355950888074907685014583790880397468973914695237139661677440025217429981429253627078303444430132992263268824958968314521]: self.assertTrue(miller_rabin.is_prime(p))