我正在通過一些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