def euler012(n): ''' Highly divisible triangular number The sequence of triangle numbers is generated by adding the natural numbers. So the 7th triangle number would be 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. The first ten terms would be: 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ... Let us list the factors of the first seven triangle numbers: 1: 1 3: 1, 3 6: 1, 2, 3, 6 10: 1, 2, 5, 10 15: 1, 3, 5, 15 21: 1, 3, 7, 21 28: 1, 2, 4, 7, 14, 28 We can see that 28 is the first triangle number to have over five divisors. What is the value of the first triangle number to have over five hundred divisors? >>> euler012(5) 28 >>> euler012(500) 76576500 ''' return dropwhile(lambda x: len(list(divisors(x))) <= n, gentriangle()).next()
def euler012b(n): ''' Original version of above function. >>> euler012b(5) 28 >>> euler012b(500) 76576500 ''' t = gentriangle() while True: triangle = t.next() if len(list(divisors(triangle))) > n: return triangle