Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
 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])
Ejemplo n.º 6
0
import euler

print sum(euler.generate_primes_by_eratosthenes(2000000))