# Highly divisible triangular number # 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? from collections import Counter from functools import reduce import util target = 76576500 for i in range(1, 100000): result = reduce(lambda x,y: x + y, list(range(1, i + 1))) # divisers = find_divisers(result) factors = util.find_prime_factors(result) total_count = 1 for factor, count in Counter(factors).items(): total_count *= count + 1 if (total_count >= 500): # print(i) # print(total_count) print(result) print(result == target) break