# Project Euler Problem 12
# 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?
def problem12():
    triangleNumber,i = 0,1
    while True:
        triangleNumber = copy = triangleNumber+i
        primeDivisors = []
        divisors = 1
        while True:
            while True:
                if copy%2==0:
                    copy = int(copy/2)
                    primeDivisors.append(2)
                    continue
                break
            for j in range(3,copy+1,2):
                if copy%j==0: 
                    while True:
                        if copy%j==0:
                            copy = int(copy/j)
                            primeDivisors.append(j)
                            continue
                        break
                    break  
            if copy==1: break
        for item in set(primeDivisors): divisors*=primeDivisors.count(item)+1
        if divisors>=500: return triangleNumber
        i+=1

print(problem12())
# answer = 76576500
