【发布时间】:2010-08-29 10:18:30
【问题描述】:
我正在通过Project Euler 上的问题自学Ruby 编程。 我知道有一个内置函数可以做到这一点,但我避免使用内置函数来帮助我学习。
所以我必须编写一个方法来确定一个数字是否是素数。第一种方法有效,但第二种方法无效。谁能解释一下为什么?
def is_prime n
for d in 2..(n - 1)
if (n % d) == 0
return false
end
end
true
end
def is_prime2 n
foundDivider = false
for d in 2..(n - 1)
foundDivider = ((n % d) == 0) or foundDivider
end
not foundDivider
end
【问题讨论】:
-
这不是您问题的答案……但是为什么在发现它不是质数之后还要检查所有这些数字?您已经得到了您问题的明确答案。
-
是的,我意识到了——但我这样做是为了确保我知道布尔运算符在 Ruby 中是如何工作的
-
可以使用以下方法开发更有效的算法:不要迭代偶数(不仅仅是跳过它们)并将循环减少到原始大小的 5-10%。详情在这里:stackoverflow.com/questions/26792960/…
标签: ruby