私は現在、peulerの質問に取り組んでいます。例で提供されているコードでテストしたので、正しいコードを持っていると思います。ただし、500 を超える因数を持つ最初の三角数を見つけるために実行しようとすると、15 分以上実行されたままになります。しかし、因数が 100 を超える最初の三角数を見つけようとすると、1 分もかからずに見つかります。
下記を参照してください:
私の質問は、これをより速く計算するにはどうすればよいですか? くっつきそうだから?
#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)