确定Ruby中的数字是否为素数

时间:2016-05-29 22:32:46

标签: ruby each primes

我正在尝试编写一个方法,根据被评估的整数是否为素数返回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

2 个答案:

答案 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