#= Created on 21 Jul 2021 @author: David Doblas Jiménez @email: daviddoji@pm.me Solution for Problem 012 of Project Euler https://projecteuler.net/problem=12 =# using BenchmarkTools function num_divisors(number::Int64) res = isqrt(number) return 2 * count(number % i == 0 for i = 1:res) - (res^2 == number) end function Problem012() #= 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? =# ans = 0 for number in Iterators.countfrom(1) ans += number if num_divisors(ans) > 500 return ans end end end println("Took:") @btime Problem012() println("") println("Result for Problem $(lpad(12, 3, "0")): ", Problem012())