Skip to content

Instantly share code, notes, and snippets.

@larryv
Created March 11, 2012 03:55
Show Gist options
  • Save larryv/2014928 to your computer and use it in GitHub Desktop.
Save larryv/2014928 to your computer and use it in GitHub Desktop.
#!/usr/bin/env ruby1.9
# Project Euler, 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?
#
# Lawrence Velazquez
# 10 March 2012
class Integer
def divisors
divs = [1, self]
2.upto(Math.sqrt(self)) {|i| divs.concat [i, self / i] if self % i == 0}
divs
end
end
i = 1
ans = while true
tri_n = i * (i + 1) / 2
break tri_n if tri_n.divisors.count > 500
i += 1
end
puts ans
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment