コード例 #1
0
ファイル: problem_48.py プロジェクト: pah8p/Project-Euler
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
コード例 #2
0
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])
コード例 #3
0
ファイル: problem_50.py プロジェクト: pah8p/Project-Euler
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))
コード例 #4
0
ファイル: problem_10.py プロジェクト: pah8p/Project-Euler
from problem_7 import sieve

x = sieve(2000000)

print(sum(x))
コード例 #5
0
ファイル: problem_35.py プロジェクト: pah8p/Project-Euler
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
コード例 #6
0
ファイル: problem_41.py プロジェクト: pah8p/Project-Euler
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

コード例 #7
0
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