import euler import math sieve = euler.sieve_of_eratosthenes(100000) sieve_dic = euler.list_to_dic(sieve) def check_goldbach(n): prime_ptr = 0 while(True): prime = sieve[prime_ptr] if prime > n: break if euler.is_square((n - prime)/2): return True prime_ptr += 1 return False def main(): n = 9 while(True): if n not in sieve_dic: if not check_goldbach(n): break n += 2 return n print main()
#Not an entirely correct solution, since I misunderstood one part. import euler import itertools prime_max = 100000000 prime_family = 8 #assume the target is within prime_max sieve_list = euler.sieve_of_eratosthenes(prime_max) sieve_dic = euler.list_to_dic(sieve_list) def get_combinations_iterator(n, r): return itertools.combinations(range(len(str(n))-1), r) def get_digits_iterator(n, positions): n = list(reversed([i for i in str(n)])) for i in range(0, 10): for position in positions: n[position] = str(i) yield int("".join(list(reversed(n)))) def check_one_number(n): length = len(str(n)) for i in range(1, length): combinations_iterator = get_combinations_iterator(n, i) while True: try: positions = [i+1 for i in list(combinations_iterator.next())] print positions digits_iterator = get_digits_iterator(n, positions)
import euler sieve = euler.sieve_of_eratosthenes(999999999) def check_pandigital(n): n = str(n) original_length = len(n) for i in range(len(n)+1,10): n = n.replace(str(i),"") n = n.replace("0","") if len(set(n))==original_length: return True else: return False i = -1 while True: prime = sieve[i] if check_pandigital(prime): print prime break i -= 1 # check_pandigital(2143)
import euler from numba import jit dic = euler.list_to_dic(euler.sieve_of_eratosthenes(10000000)) def main(): max_val = -1 global_a, global_b = 0, 0 for a in range(-999,1000): for b in range(-999,1000): n = 0 count = 0 while(True): if (n**2 + a*n + b) in dic: count += 1 else: break n += 1 if count>=max_val: max_val = count global_a, global_b = a, b return global_a, global_b, max_val global_a, global_b, max_val = main() print (global_a,global_b,max_val)