Speeding up a script -- looking for ideas

Martin Beckman martin_beckman at yahoo.com
Sun Oct 20 11:00:17 EDT 2002


How about:

def foo(end, min_pairs=2):
    cubes = [0]
    i = 1
    while i**3 < end:
        cubes.append(i**3)
        i = i + 1
    table = {}
    for j in range(1, len(cubes)):
        for k in range(j, len(cubes)):
            sum = cubes[j] + cubes[k]
            if not table.has_key(sum):
                table[sum] = []
            table[sum].append((j, k))
    for sum in table.keys():
        if len(table[sum]) >= min_pairs:
            print sum, table[sum]

Regarding the question of three pairs,

>>> foo(10000000,3)
>>> foo(100000000,3)
87539319 [(167, 436), (228, 423), (255, 414)]

martin



More information about the Python-list mailing list