以下是Codeacademy.com的一些代码。有些事情我不明白:为什么is_prime的值不会随着循环的每次迭代而改变?例如,测试数字8,可能是循环导致is_prime对于值2和3为false,但是对于4则变为false(因为您可以除以4)。然而,对于5,6和7,它再次成真。那么为什么在循环结束时,即使在5,6和7之后它仍然是真的,它仍然是假的?
def prime(n)
puts "That's not an integer." unless n.is_a? Integer
is_prime = true
for i in 2..n-1
if n % i == 0
is_prime = false
end
end
if is_prime
puts "#{n} is prime!"
else
puts "#{n} is not prime."
end
end
prime(2)
prime(9)
prime(11)
prime(51)
prime(97)
答案 0 :(得分:3)
您所描述的行为如果是这样写的话会发生什么:
for i in 2..n-1
if n % i == 0
is_prime = false
else
is_prime = true
end
end
但是在您的代码中没有else
。如果数字不可分,则没有任何反应,因此变量保持不变。