from problem_7 import sieve PRIMES = sieve(1000) def prime_factors(n): factors = [] curr_n = n for p in PRIMES: if curr_n % p == 0: factors.append(p) curr_n /= p while True: if curr_n % p == 0: factors.append(p) curr_n /= p else: break return factors EXPONENTS = {} def exponentiate(x, y): try: return EXPONENTS['%s**%s' % (x, y)] except KeyError: z = x**y
from problem_7 import sieve PRIMES = [p for p in sieve(9999) if p > 999] for p1 in PRIMES: for p2 in [p for p in PRIMES if p > p1]: if sorted(str(p1)) == sorted(str(p2)): for p3 in [p for p in PRIMES if p > p2]: if p2 - p1 == p3 - p2: if sorted(str(p2)) == sorted(str(p3)): print([p1, p2, p3])
from problem_7 import sieve N = 1000000 PRIMES = sieve(N) def find_length(n, ceiling): for i in range(N - n): s = sum(PRIMES[i:i + n]) if s >= ceiling: break if s in PRIMES: return (n, s) return None def find_max_length(celing): for n in range(200, 1000): length = find_length(n, N) if length: print(length) print(find_max_length(N))
from problem_7 import sieve x = sieve(2000000) print(sum(x))
from problem_7 import sieve def rotate(n): n_str = str(n) return int('%s%s' % (n_str[1:], n_str[0])) primes = sieve(int(1e2)) CIRCULAR = {} def circular(n): to_list = lambda n: [int(m) for m in str(n)] try: return CIRCULAR[n] except KeyError: print(n) if 2 in to_list(n): CIRCULAR[n] = False return False if 0 in to_list(n): CIRCULAR[n] = False return False
from problem_7 import sieve import itertools PRIMES = sieve(int(1e7))[::-1] def is_pandigital(n): digits = [str(m) for m in range(1,1+len(str(n)))] return list(sorted(set(str(n))))==digits print(is_pandigital(125354)) for prime in PRIMES: if is_pandigital(prime): print(prime) break
from problem_7 import sieve primes = sieve(int(1e6)) def trunc_right(n): truncs = [n] for m in range(len(str(n)) - 1): if n > 10: n = int(str(n)[:-1]) truncs.append(n) return truncs def trunc_left(n): truncs = [n] for m in range(len(str(n)) - 1): if n > 10: n = int(str(n)[1:]) truncs.append(n) return truncs def trunc(n): try: return list(set(trunc_left(n) + trunc_right(n))) except ValueError: print(n) raise