コード例 #1
0
ファイル: problem047.py プロジェクト: kju2/euler
def main():
    """
    >>> main()
    134043
    """
    primes = Primes(10 ** 6)

    min_consecutive_valid_numbers = 4
    distinct_prime_factors = 4

    # next number after lower bound has to have at least distinct_prime_factors
    # of odd primes as prime factors
    lower_bound = (3 * 5 * 7 * 11) - 1

    number = 0
    consecutive_valid_numbers_count = 0

    for number in count(lower_bound):
        if consecutive_valid_numbers_count == min_consecutive_valid_numbers:
            break

        if len(set(primes.factors_of(number))) == distinct_prime_factors:
            consecutive_valid_numbers_count += 1
        else:
            consecutive_valid_numbers_count = 0

    # print first number of the consecutive numbers
    print(number - distinct_prime_factors)
コード例 #2
0
ファイル: problem003.py プロジェクト: kju2/euler
def main():
    """
    >>> main()
    6857
    """
    number = 600851475143

    primes = Primes(10 ** 6)

    print(max(primes.factors_of(number)))
コード例 #3
0
 def test_primes_firsts(self):
     assert Primes.first(1) == [2]
     assert Primes.first(2) == [2, 3]
     assert Primes.first(5) == [2, 3, 5, 7, 11]
     assert Primes.first(20)[-5:] == [53, 59, 61, 67, 71]
     assert Primes.first(100)[99] == 541
     assert Primes.first(20004)[79] == 409
コード例 #4
0
ファイル: problem060.py プロジェクト: kju2/euler
def main():
    """
    >>> main()
    26033
    """
    primes = Primes(10 ** 8)

    remarkable_primes = []
    remarkable_primes_min_sum = sys.maxsize

    i = 0
    while True:
        if i > PRIME_INDEX_LIMIT:
            last_added_prime = list_to_int(remarkable_primes.pop())
            i = primes.index(last_added_prime) + 1
            if len(remarkable_primes) == 0 and i == PRIME_INDEX_LIMIT:
                break

        new_prime = str(primes[i])
        new_prime_is_remarkable = True
        for prime in remarkable_primes:
            if list_to_int(new_prime + prime) not in primes:
                new_prime_is_remarkable = False
                break

            if list_to_int(prime + new_prime) not in primes:
                new_prime_is_remarkable = False
                break

        if new_prime_is_remarkable:
            remarkable_primes.append(new_prime)
            if len(remarkable_primes) == LEN_PRIME_SET:
                primes_sum = sum((int(p) for p in remarkable_primes))
                if primes_sum < remarkable_primes_min_sum:
                    remarkable_primes_min_sum = primes_sum

        i += 1

    print(remarkable_primes_min_sum)