コード例 #1
0
ファイル: euler0073.py プロジェクト: jwodder/euler
def solve():
    sieve(12000)
    cache = [0,0,0,0] + [None] * 12001
    qty = 0
    for d in xrange(4, 12001):
        cache[d] = twixtQty(d) - sum(cache[div] for div in divisors(d)
                                                if div != d)
        qty += cache[d]
    return qty
コード例 #2
0
ファイル: euler0159.py プロジェクト: jwodder/euler
def solve():
    sieve(10**6)
    mdrs = [None] * 10**6
    mdrs[0] = 0  # to emulate the omission of 1 from factorizations
    accum = 0
    for n in xrange(2, 10**6):
        val = max(droot(d) + mdrs[n // d - 1] for d in divisors(n) if d != 1)
        accum += val
        mdrs[n-1] = val
    return accum
コード例 #3
0
 def test_divisors_1(self):
     d = eulerlib.divisors(1)
     assert d == [1], 'Divisors should be 1'
コード例 #4
0
 def test_divisors_0(self):
     d = eulerlib.divisors(0)
     assert d == []
コード例 #5
0
 def test_divisors_1001(self):
     d = eulerlib.divisors(1001)
     assert d == [1, 7, 11, 13, 77, 91, 143, 1001]
コード例 #6
0
 def test_divisors_17(self):
     d = eulerlib.divisors(17)
     assert d == [1, 17], 'Divisors should be 1 and 17.'
コード例 #7
0
 def test_divisors_neg10(self):
     d = eulerlib.divisors(-10)
     assert d == [1, 2, 5, 10], 'Divisors should be 1, 2, 5, 10'