为什么用于确定素数的模数公式是否适用于素数2?

时间:2017-06-09 19:51:18

标签: ruby primes

MainPipe mp = ((TaskHost)p.Executables.Add("DTS.Pipeline")).InnerObject as MainPipe;
mp.AutoAdjustBufferSize = true;

3 个答案:

答案 0 :(得分:2)

因为您从未输入each。如果值为2,则(2..num/2)变为(2..2/2),即(2..1)。 Ruby的范围运营商不会倒退,因此没有任何东西可以让每个"每个"结束了。

答案 1 :(得分:0)

我相信,因为(num / 2)在这种情况下是1,所以循环永远不会运行,所以它会落到真实的'在底部。

答案 2 :(得分:0)

我认为您的方法正在工作:

puts prime?(2)
#=> true

正如评论中提到的那样,您还可以通过浏览号码的sqrt来保存一些步骤:

(2..Math.sqrt(num)).each do |x|