def problem49(): primes = filter(lambda p: p >= 1000, euler.generate_primes_by_eratosthenes(10000)) prime_sets = defaultdict(list) for prime in primes: key = ''.join(sorted(str(prime))) prime_sets[key].append(prime) for k in prime_sets: prime_set = prime_sets[k] if len(prime_set) >= 3: found = _test_set(prime_set) if found is not None: return found raise ValueError
def problem35(): primes = euler.generate_primes_by_eratosthenes(1000000) prime_set = set(primes) found = 0 for prime in primes: circular_prime = True for x in rotate(prime): if int(x) not in prime_set: circular_prime = False break if circular_prime: found += 1 return found
def problem46(): primes = euler.generate_primes_by_eratosthenes(MAX_VALUE) prime_set = set(primes) for tst in itertools.count(9, 2): if tst > MAX_VALUE: ValueError if tst in prime_set: continue found_goldback = False for p in primes: if p > tst: break remainder = tst - p if remainder % 2 == 0: sqrt = math.sqrt(decimal.Decimal(remainder / 2)) if sqrt - int(sqrt) == 0: found_goldback = True break if not found_goldback: return tst
644 = 2² × 7 × 23 645 = 3 × 5 × 43 646 = 2 × 17 × 19. Find the first four consecutive integers to have four distinct prime factors. What is the first of these numbers? """ import euler import itertools import math MAX_VALUE = 1000000 DISTINCT = 4 primes = euler.generate_primes_by_eratosthenes(MAX_VALUE) primes_set = set(primes) prime_factors = {} def find_prime_factors(value): if value > MAX_VALUE: raise ValueError if value in primes_set: return [value] for p in primes: if value % p == 0: return [p] + find_prime_factors(value/p) if p > math.sqrt(value): break
def test_erasthonens(self): self.assertEqual(euler.generate_primes_by_eratosthenes(10), [2, 3, 5, 7]) self.assertEqual(euler.generate_primes_by_eratosthenes(20), [2, 3, 5, 7, 11, 13, 17, 19])
import euler print sum(euler.generate_primes_by_eratosthenes(2000000))