def next_prime_number (last_known_prime)
while true
last_known_prime++
found_factor = false # ERROR
for i in 1...last_known_prime
if last_known_prime % i == 0
found_factor = true
break
end
end
if !found_factor
puts "new prime: #{last_known_prime}"
Kernel.exit
end
end
end
in `next_prime_number': undefined method `+@' for false:FalseClass (NoMethodError)
我收到了上述错误并且完全难倒了。任何想法(不,这不是家庭作业,我试图通过欧拉项目自学Ruby)。
答案 0 :(得分:4)
正如mikej所说,ruby中没有后增量(++
)运算符。但是,有一个一元加(拼写+@
定义时)
last_known_prime++
found_factor = false
被解析为
之类的东西last_known_prime + (+(found_factor = false))
--------------------^ unary plus on false
导致你的神秘错误。
答案 1 :(得分:3)
没有++
运算符用于在Ruby中递增整数,因此请尝试将last_known_prime++
替换为last_known_prime = last_known_prime + 1
。
这将解决您所看到的错误。在此之后你的程序还有另一个问题,但我不会破坏你自己解决欧拉问题的尝试。