Project Euler Problem 12

問題

The sequence of triangle numbers is generated by adding the natural numbers. So the
 7^(th) 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?

ソース

require 'mathn'

class Integer
	def divisor_count
		array = []
		self.prime_division.each do |a|
			a[1].times do
				array.push(a[0])
			end
		end
		count = [1, self]
		1.upto(array.size - 1) do |n|
			array.combination(n).to_a.each do |c|
				count.push(c.inject(:*))
			end
		end
		count.uniq.size
	end
end

i = 1
x = 1
while true do
	break if x.divisor_count >= 501
	x += (i += 1)
end

puts x

解答

76576500

感想

絶対もっと簡単に答え出せるし!

追記

ちょっとソースを修正
Integerクラスにメソッドを定義する形で奇麗にした