我正在通过一些Project Euler问题来练习使用Ruby解决问题。我为问题3提出了以下解决方案,尽管它适用于较小的数字,但似乎从未为较大的数字返回值。这是因为与Bignum有关吗?有人可以给我描述为什么它超时,并更好的办法来解决这个问题(最好用推理/上发生了什么事情的幕后我试图信息了解)Ruby项目中的Euler#3解决方案超时
项目欧拉问题:
13195的主要因素是5,7,13和29. 数字600851475143的最大素因是多少?
我的解决办法:
def primecheck(number)
(2...number).each { |x| return false if number % x == 0}
true
end
def largestprime(number1)
factors = []
(1..number1).each do |i|
if number1 % i == 0 && primecheck(i)
factors << i
end
end
puts "The answer is #{factors.last}"
end
largestprime(600_851_475_143)
@hammar除非Ruby是VB,否则他只是检查素数是否为素数,所以它是'O(n)'。 – 2013-05-10 12:43:00