def getPrime(testNumber)
temp1=testNumber -1;
bIsPrime = false;
while (temp1 > 1) do
bIsPrime = ((testNumber % temp1) == 0)
puts("Check 1 #{((testNumber % temp1) == 0)}, temp1=#{temp1} ");
if ($bIsPrime)
break;
else
temp1 = temp1-1;
end
end
return bIsPrime
end
puts("Enter any number to know if it's Prime or not");
testNumber = gets()
returnVal = getPrime(Integer(testNumber));
puts("Is enternered number Pime? #{return}");
我刚开始使用Ruby ...所以首先我试着写一个素数程序。
这件事给出错误“意外回归”
任何帮助都会很棒。感谢。
答案 0 :(得分:3)
return
是保留的。除了返回之外,您不能将它用作变量名,否则不能。
我相信你的意思是puts("Is entered number prime? #{!returnVal}");
答案 1 :(得分:2)
不要检查这个答案,亚当是第一个。但是这里有更多信息
正如亚当在答案中所说,问题在于你说
puts("Is enternered number Pime? #{return}");
发生了什么
Ruby评估#{ foo }
构造内的任何内容 - 如果它在插值字符串中,例如
puts "1 + 1 = #{1+1}"
==>>将打印1 + 1 = 2
然后将结果值转换(强制)为字符串。
在你的情况下,你告诉ruby评估return
语句,这在上下文中没有任何意义。因此有点奇怪的错误信息。
答案 2 :(得分:0)
虽然你已经有了答案,但我认为放在这里是有帮助的,它遵循你在代码中使用的相同想法:
def is_prime?(test_number)
(2..test_number-1).reverse_each do |i|
divisible = (test_number % i == 0)
puts "Check ##{test_number-i}, divisible=#{divisible}, temp=#{i}"
return false if divisible
end
return true
end
puts "Enter any number to know if it's prime or not"
test_number = gets.chomp.to_i
puts "Is entered number prime? #{is_prime?(test_number)}"