def find_solution(): start_time = datetime.now() answer = 0 primes = [] progress = ProgressBar(1000000) for n in xrange(2, progress.max): progress.set_value(n) if is_prime(n, primes): primes.append(n) all_prime = True for item in rotate(n): if not is_prime(int(item)): all_prime = False break if all_prime: print "Found palindrome: %s" % n answer += 1 end_time = datetime.now() progress.finished() print "answer: %s" % answer print "number of primes: %s" % len(primes) print "first 10 primes: %s" % primes[:10] print end_time - start_time
def find_solution(): start_time = datetime.now() answer = 0 primes = [] progress = ProgressBar(1000000) for n in xrange(2, progress.max): progress.set_value(n) if is_prime(n, primes): primes.append(n) #~ digits = map(lambda x: int(x), str(n)) try: permutate(map(lambda x: x, str(n)), [], raise_if_not_prime) print "Found palindrome: %s" % n answer += 1 except IsNotPrimeError: pass #~ all_prime = True #~ for item in permutate(map(lambda x: x, str(n)), ""): #~ if not is_prime(int(item)): #~ all_prime = False #~ break #~ if all_prime: end_time = datetime.now() progress.finished() print "answer: %s" % answer print "number of primes: %s" % len(primes) print "first 10 primes: %s" % primes[:10] print end_time - start_time
def is_truncatable(number): if not is_prime(number): return False number_str = str(number) for n in range(1, len(number_str)): truncated = int(number_str[:-n]) if not is_prime(truncated): #~ print truncated return False truncated = int(number_str[n:]) #~ print truncated if not is_prime(truncated): return False # from left to right return True
def do_it(number, depth): solution_count = 0 #~ print "do_it(%s, %s)" % (number, depth) for append_this in range(10): #~ check_this = int(str(number) + str(append_this)) check_this = number * 10 + append_this if is_prime(check_this): #~ print check_this do_it(int(check_this), depth + 1) if is_truncatable(check_this): solutions.append(check_this)
def chain_length(a, b): """ >>> chain_length(-79, 1601) 80 >>> chain_length(1, 41) 40 """ n = 0 while True: p = n ** 2 + a * n + b if not is_prime(p): break n += 1 return n
def primes(max=None): n = 1 while (max == None) or (n < max): if is_prime(n): yield n n += 1
""" if __name__ == "__main__": import sys, os sys.path.append( os.path.join( os.getcwd(), '..' ) ) from datetime import datetime from euler_tools.prime import is_prime from euler_tools.progress_bar import ProgressBar start_time = datetime.now() sum = 0 primes = [] progress = ProgressBar(2000000) for n in xrange(2, progress.max): progress.set_value(n) if is_prime(n, primes): sum += n primes.append(n) end_time = datetime.now() progress.finished() print "sum: %s" % sum print "number of primes: %s" % len(primes) print end_time - start_time #2,000,000: 142913828922
def raise_if_not_prime(char_array): tmp_str = reduce(lambda r, x: r + str(x), char_array, "") if not is_prime(int(tmp_str)): raise IsNotPrimeError("is not prime: " + tmp_str)
""" By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6^(th) prime is 13. What is the 10001^(st) prime number? """ if __name__ == "__main__": import sys, os sys.path.append( os.path.join( os.getcwd(), '..' ) ) from euler_tools.prime import is_prime n = 2 for counter in range(10001): while not is_prime(n): n += 1 print "#%s\t%s" % (counter, n) n += 1