【发布时间】:2015-05-27 05:32:07
【问题描述】:
我试图找到一个大数的最大素值,但它需要的时间太长了。例如,要找到 999999999 的最大素数,大约需要 55 秒。我该如何改进?
require 'prime'
def highestprime num
i = 1
counter = 0
count = -1
factors = []
primes = []
while (i < num/2) #checks for all factors of number
i += 1
if (num%i == 0)
factors.push(i) #adds all factors to the end factors array
end
end
while (counter != factors.length) #goes through whole array
counter += 1
count += 1
if (factors[count].prime?)
primes.push factors[count]
else
next
end
end
puts primes.pop
end
【问题讨论】:
-
参见 Project Euler 问题 3 和 stackoverflow.com/questions/23287/…