【发布时间】:2015-01-16 00:26:19
【问题描述】:
这是我的代码:
def is_prime(i)
j = 2
while j < i do
if i % j == 0
return false
end
j += 1
end
true
end
i = (600851475143 / 2)
while i >= 0 do
if (600851475143 % i == 0) && (is_prime(i) == true)
largest_prime = i
break
end
i -= 1
end
puts largest_prime
为什么没有返回任何东西?通过所有数字进行的计算是否太大?有没有不使用 Ruby prime 库的简单方法(达不到目的)?
我在网上找到的所有解决方案对我来说都太高级了,有没有初学者能够理解的解决方案?
【问题讨论】:
-
因为它循环了很多数字。它需要时间来完成。
Project Euler的目的是提出高效的算法。 -
查找 Eratosthenes 筛,或任何其他素筛
-
另一个问题是 Ruby 对
Prime的实现很慢。除此之外,是的,重点是学习算法,而不是通过蛮力解决。 -
或者只是……Write In C
标签: ruby-on-rails ruby primes factorization