#!/usr/bin/python

# Problem 12
#
# 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?
import time
import itertools
import math

start = time.time()


def divisor_count(number):
    total_divisors = sum(2 for i in range(1, round(math.sqrt(number) + 1)) if not number % i)
    if number == math.sqrt(number) * math.sqrt(number):
        total_divisors = total_divisors -1
    return total_divisors


def get_triangle_number():
    total = 0
    for n in itertools.count(1):
        total = total + n
        yield total


for t in get_triangle_number():
    if divisor_count(t) >= 500:
        print(t)
        break

elapsed = time.time() - start
print("Time: {:.5f} seconds".format(elapsed))
