我目前正在研究 peuler 问题。我认为我有正确的代码,因为我使用示例中提供的代码对其进行了测试。但是,当我尝试运行它以找到第一个超过 500 个因子的三角形数时,它会持续运行超过 15 分钟。但是当我尝试找到第一个包含 100 多个因子的三角形数时,它会在一分钟内找到它。
请看下面:
我的问题是我怎样才能更快地计算出来?因为它似乎被卡住了?
#Project 12 #http://projecteuler.net/problem=12
def triangle(x) #finds the (x)st triangular number
x=(1..x)
return x.inject(:+)
end
def factors(x) #calculates how many factors (x) has
factors =[]
range=(1..x)
range.each {|num|
if x%num==0
factors << num
end
}
return factors.length
end
def project12(x) #finds the first triangular number that has over (x) factors
i=1
until factors(triangle(i)) > x
i += 1
end
return triangle(i)
end
print project12(500)