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?
#!/usr/bin/ruby
# Get a triangle number: n * ( n + 1 ) / 2
def getTriangleNumberValue(n)
return n * ( n + 1 ) / 2
end
# Brute force
# (There is a better way to do it using Prime Factorisation)
def getNumberDivisor(n)
divisors = 0
sqrt = Math.sqrt(n)
for i in 1...sqrt
if n % i == 0
divisors += 2
end
end
# Correction if the number is a perfect square
if sqrt * sqrt == n
divisors -= 1
end
return divisors
end
notFound = true
i = 1
while notFound
triangleNumberValue = getTriangleNumberValue(i)
if getNumberDivisor(triangleNumberValue) > 500
notFound = false
end
i += 1
end
puts triangleNumberValue