import PIL import math # Problem 12 Highly divisible triangular number # finds the first number with over 500 factors def countfactors(num): factors = 0 # we only need to know about the FIRST HALF of factors, # one factor implies a second root = int(math.ceil(math.sqrt(num))) divs = range(1, root) for d in divs: if(num % d == 0): factors += 2 # Correction if the number is a perfect square if (root * root == num): factors -= 1 return factors #### MAIN ##### i = 1 k = 1 j = 0 while(k < 500): j += i k = countfactors(j) print(str(j) + " has " + str(k) + " factors") i += 1 print("Ding! Ding! {} has over 500 factors, wow!".format(j))