我一直在处理素数程序,我遇到了一些Ruby代码:
(2..prime/2).none?{|i| prime % i == 0}
Run Code Online (Sandbox Code Playgroud)
有人可以把它分解给我并用简单的语言向我解释.如果你熟悉reddit EIL5.(解释它就像我是5.)
我在这里找到了代码:
即使非常低效,它也非常简单.它分解为:
# For each of the numbers in the range 2 to prime/2...
(2..prime/2).none? do |i|
# ...test that none of them divide evenly with the given prime.
# That is the modulus (%) of those two numbers is zero, or no
# remainder from division.
prime % i == 0
end
Run Code Online (Sandbox Code Playgroud)
有更好的方法来解决这个问题,但这种蛮力的方法应该有效.
none?是Enumerable中的众多便捷方法之一.它们可以处理Array和Hash对象,并提供有用的工具,用于将一组对象转换为另一组对象.
在这种情况下,它测试的是没有数字符合这些标准.这与您的要求相反any?或all?取决于您的要求.