def solve(): result = 0 #@UnusedVariable start = time.clock() i = 0 primes = {} truncatable_primes = [] for i in range(0, 7): border = ['37'] if i == 0: border = ['2357'] digit_sets = border + i*['1379'] + border for digits in produce(digit_sets): number = "".join(digits) nums = sorted(set([int(n) for n in generate_left_truncated_string(number)] + [int(n) for n in generate_right_truncated_string(number)])) all_are_primes = True for n in nums: if n < 10: continue try: is_p = primes[n] except KeyError, e: is_p = miller_rabin(n, 20) primes[n] = is_p if not is_p: all_are_primes = False if all_are_primes: truncatable_primes.append(int(number))
def check_number(self, number): """ Check if number is prime and is Bluma number :param number: :return: """ return number % 4 == 3 and miller_rabin(number)
def solve(): result = 0 #@UnusedVariable start = time.clock() pandigits = '123456789' primes = [] for i in range(9, 0, -1): for pandigital_num in all_perms(pandigits[:i]): n = int(pandigital_num) if(miller_rabin(n)): primes.append(n) if len(primes) > 0: break result = max(primes) print("The largest n-digit pandigital prime is %(result)s" % vars()) print(time.clock() - start)
def solve(ratio): # ps = sieve_eratosthenes(10**8) # highest_prime = ps[-1] # primes = list_to_dict(ps, True) # print('Sieve prepared') num_numbers = 0 num_primes = 0 i = 0 for layer in spiral_layer_edges(): i += 1 for n in layer: if miller_rabin(n, 50): num_primes += 1 num_numbers += len(layer) if Fraction(num_primes, num_numbers) < ratio and i > 1: print(num_primes, num_numbers) return 1 + 2*(i-1)
''' import prime import math primes = prime.sieve(100) not_found = True triangle_num =3 counter_num =3 while not_found: factored_num = triangle_num factor_counter = 1 if not prime.miller_rabin(triangle_num): for i in primes: factor_pow=0 while factored_num%i ==0: factor_pow+=1 factored_num=factored_num/i factor_counter*=(factor_pow+1) if factored_num ==1 : break if factor_counter >500: print triangle_num not_found = False triangle_num+= counter_num counter_num+=1
def __is_good_prime(self, number): return number % 4 == 3 and prime.miller_rabin(number)
def isPrime(n): return miller_rabin(n)
def check_number(self, number): return miller_rabin(number)
def isPrime(n): if dicPrime.has_key(n): return dicPrime[n] else: dicPrime[n] = miller_rabin(n) return dicPrime[n]
def test_miller_rabin_with_prime(): assert miller_rabin(53, 2)
def test_exception_in_miller_rabin(): with pytest.raises(OutOfRange): miller_rabin(23, 23)
def test_miller_rabin_with_non_prime(): assert miller_rabin(25, 3) == False
import prime import randomnumber import sys if __name__ == '__main__': arg = sys.argv[len(sys.argv)-1] n = 0 is_prime = False if arg == '--fermat': while not is_prime: n = randomnumber.multiply_with_carry() is_prime = prime.fermat(n) print('Random number generated with MWC: {}'.format(n)) print('Is prime by fermat? {}'.format(is_prime)) elif arg == '--miller': while not is_prime: n = randomnumber.multiply_with_carry() is_prime = prime.miller_rabin(n) print('Random number generated with MWC: {}'.format(n)) print('Is prime by miller? {}'.format(is_prime))