我正在尝试编写一个方法,根据被评估的整数是否为素数返回true或false。下面的代码是基于阅读维基百科文章,以前的stackoverflow答案等拼凑在一起的东西。目前程序对素数返回true,但不返回false。我想在不使用任何内置函数的情况下执行此操作。我该怎么解决这个问题?
def prime?(integer)
(2..integer - 1).each do |x|
if (integer % x) == 0
return false
else
return true
end
end
end
答案 0 :(得分:1)
您遇到了逻辑问题。对于任何不能被2整除的数字,程序返回true。所以,只需在循环完全执行后放入return true
语句。
def prime?(integer)
return false if integer < 2
(2..integer - 1).each do |x|
if (integer % x) == 0
return false
end
end
true
end
答案 1 :(得分:1)
另一种选择,从变量设置为true开始。
def prime?(integer)
(2..integer - 1).each {|x| return false if (integer % x) == 0 }
true
end