Ruby 为什么确定哪些不是质数的模公式适用于质数2?
我相信,由于在这种情况下(num/2)是1,循环永远不会运行,因此它会一直到底部的“true”为止。因为您从未输入每个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的平方根,而
。如果值为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|