def p49(): s = get_sieve_erosthane(9999, sort = True) sieve = [n for n in s if n >= 1000] sieveSet = set(sieve) answers = set() for n in sieve: perm = permutations(str(n)) num = set([list_to_int(i) for i in perm if list_to_int(i) in sieveSet]) if len(num) < 3 : continue num = list(num) num.sort() l = len(num) for i in range(0, l): for j in range(i+1, l): diff = num[j] - num[i] if num[i] + diff not in num or num[i] + 2 * diff not in num : continue answers.add((num[i], num[i]+diff, num[i]+diff+diff)) return answers
def p41(): numbers = ['0', '1', '21', '321', '4321', '54321', '654321', '7654321'] # sqrt(999999999) = 31622 sieve = get_sieve_erosthane(32000, sort = True) for i in range(7, 1, -1): perm = permutations(numbers[i]) for p in perm: num = list_to_int(p) if pTest_sieve(num, sieve) : return num
def p43(): num = "0123456789" perms = permutations(num) answer = [] for ns in perms: # Rough Checks if (int(ns[3]) % 2 != 0 or int(ns[5]) % 5 != 0 ): continue # Full Checks if (list_to_int(ns[2:5]) % 3 != 0 or list_to_int(ns[4:7]) % 7 != 0 or list_to_int(ns[5:8]) % 11 != 0 or list_to_int(ns[6:9]) % 13 != 0 or list_to_int(ns[7:10]) % 17 != 0) : continue answer.append(list_to_int(ns)) print ns print answer return sum(answer)