【发布时间】:2019-01-05 07:33:36
【问题描述】:
早上好,
我编写了以下代码,它适用于 small-is 数字,以找到一个数字的最大素数。我不能使用Prime,我需要想出一个手动解决方案。
def is_prime?(number)
list = (2..(Math.sqrt(number))).to_a
list.each do |i|
return false if number % i == 0
end
true
end
def biggest_prime(number)
list = (2..((number))).to_a
divisors = list.select{|i| is_prime?(i)}
divisors.select{|i| number % i == 0 }.max
end
13195 的质因数是 5、7、13 和 29。
biggest_prime(13195) => 29
但是,当我尝试使用 biggest_prime(600851475143) 的边缘情况时,系统会冻结。
谁能告诉我如何重构我的代码以提高效率?
非常感谢!
【问题讨论】: