Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 为什么确定哪些不是质数的模公式适用于质数2?_Ruby_Primes - Fatal编程技术网

Ruby 为什么确定哪些不是质数的模公式适用于质数2?

Ruby 为什么确定哪些不是质数的模公式适用于质数2?,ruby,primes,Ruby,Primes,我相信,由于在这种情况下(num/2)是1,循环永远不会运行,因此它会一直到底部的“true”为止。因为您从未输入每个。如果值为2,则(2..num/2)变为(2..2/2),即(2..1)。Ruby的范围运算符不会倒退,因此没有什么可以“每个”结束。我认为您的方法是有效的: 正如评论中提到的,您也可以只通过编号的sqrt来保存一些步骤: puts prime?(2) #=> true 好消息是2是一个素数,因此返回true不是问题:)不管它值多少,您都可以通过向上移动num的平方根,而

我相信,由于在这种情况下(num/2)是1,循环永远不会运行,因此它会一直到底部的“true”为止。

因为您从未输入每个
。如果值为2,则
(2..num/2)
变为
(2..2/2)
,即
(2..1)
。Ruby的范围运算符不会倒退,因此没有什么可以“每个”结束。

我认为您的方法是有效的:

正如评论中提到的,您也可以只通过编号的
sqrt
来保存一些步骤:

puts prime?(2)
#=> true

好消息是2是一个素数,因此返回
true
不是问题:)不管它值多少,您都可以通过向上移动
num
的平方根,而不是一半来缩短这种暴力尝试。
puts prime?(2)
#=> true
(2..Math.sqrt(num)).each do |x|