In [1]:
from euler import gen_triangular
from euler import gen_lt
from euler import get_factors
from euler import product

In [2]:
list(gen_lt(gen_triangular(), 100))


Out[2]:
[1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91]

In [3]:
def terse(x):
    f = {}
    for i in x:
        if i not in f:
            f[i] = 0
        f[i] += 1
    return f

In [4]:
def foo(n):
    for t in gen_triangular():
        if product(map((lambda x: x+1), terse(get_factors(t)).values())) > n:
            return t

In [5]:
n = 500
%timeit foo(n)
foo(n)


1 loops, best of 3: 1.03 s per loop
Out[5]:
76576500