コード例 #1
0
ファイル: problem47.py プロジェクト: greb/projecteuler
from eulerhelper import prime_factors, prime_sieve
from operator import mul

sieve_max = 10**6
sieve = prime_sieve(sieve_max)
primes = [] 
for x in xrange(sieve_max):
    if sieve[x]:
        primes.append(x)

def factors(n):
    facs = []
    for p in primes:
        if n == 1:
            break
        if n%p == 0:
            facs.append(p)
            while n%p == 0:
                n = n / p
    return facs

def problem47():
    i = 0
    size = 4 
    numbers = []
    while True:
        i = i + 1
        print i
        numbers.append(len(factors(i)))
        if len(numbers) > size:
            del numbers[0]
コード例 #2
0
ファイル: problem.py プロジェクト: greb/projecteuler
from eulerhelper import prime_sieve

limit = 10**6
sieve = prime_sieve(limit)
primes = [x for x in xrange(limit) if sieve[x]]

def count_additions(n, p):
    count = 0
    while n > 0:
        count = count + 1
        n = n - primes[p] 
        p = p + 1
    return count, n

def problem50():
    result = 0
    max = 0
    for n in xrange(limit):
        print n
        if sieve[n] == 1:
            stop = 10 
            for p in xrange(0, stop):
                additions, diff = count_additions(n, p)
                if diff == 0 and additions > max:
                    max = additions
                    result = n
    return result
        
print problem50()