Пример #1
0
def solution():
    limit = 10000
    primes_list = set(seive_of_erat(limit))
    n = 9
    while n < limit:
        if n not in primes_list:
            primes_below = seive_of_erat(n)
            conjecture_false = True
            for p in primes_below:
                if sqrt((n - p) / 2).is_integer():
                    conjecture_false = False
            if conjecture_false:
                return n
        n += 2
Пример #2
0
def solution():
    four_digit_primes = [p for p in seive_of_erat(10000) if p > 999]
    for i, prime1 in enumerate(four_digit_primes):
        if prime1 == 1487:
            continue
        for prime2 in four_digit_primes[i + 1:]:
            prime3 = 2 * prime2 - prime1
            if prime3 in four_digit_primes:
                if set(str(prime1)) == set(str(prime2)) == set(str(prime3)):
                    return str(prime1) + str(prime2) + str(prime3)
Пример #3
0
def solution():
    list_of_primes = seive_of_erat(1000000)
    set_of_primes = set(list_of_primes)
    num_circ_primes = 0
    for prime in list_of_primes:
        circ = True
        for rotation in rotations(prime):
            if rotation not in set_of_primes:
                circ = False
        if circ:
            num_circ_primes += 1
    return num_circ_primes
Пример #4
0
def find_family(n, limit=100000):
    """Finds lowest prime in family of n primes, searches up to limit"""
    primes_list = seive_of_erat(limit)
    primes_set = set(primes_list)
    for p in primes_list:
        digits = get_digits(p)
        for d in digits:
            family = replace_digits(p, d)
            if family:
                size = len([m for m in family if m in primes_set])
                if size + 1 == n:
                    return p
    return False
Пример #5
0
def solution():
    best_len = 0
    best_pair = None
    primes_list = set(seive_of_erat(10000))
    for a in range(-999, 1000):
        for b in range(-999, 1000):
            n = 0
            while quadratic_function(n, a, b) in primes_list:
                n += 1
            if n - 1 > best_len:
                best_len = n - 1
                best_pair = (a, b)
    return best_pair, best_len, best_pair[0] * best_pair[1]
Пример #6
0
def solution():
    limit = 1000000
    primes_list = seive_of_erat(limit)
    primes_set = set(primes_list)
    best = (0, 0)
    for i, pstart in enumerate(primes_list):
        running_sum = pstart
        point = i
        while running_sum < limit and point < len(primes_list) - 1:
            point += 1
            running_sum += primes_list[point]
            if running_sum in primes_set and point - i + 1 > best[1]:
                best = (running_sum, point - i + 1)
    return best[0]
Пример #7
0
def sum_n_primes(n):
    """Returns sum of all primes below n"""
    return sum(seive_of_erat(n))