素数检查器始终返回true

时间:2015-11-19 14:13:48

标签: ruby

我被赋予了一个赋值来创建一个取整数的方法,如果它是素数则返回true,如果不是则返回false。我在下面写的代码没有为非素数返回false。有什么想法吗?

def prime?(integer)
  (2...integer).each do |divisor| 
    if integer % divisor == 0
      return false
    else
      return true
    end
  end
end

1 个答案:

答案 0 :(得分:7)

如果else条件不能被任何除数整除,则会立即启动它。你需要把它移到循环之外。

def prime? (integer)
  (2...integer).each do |divisor| 
    if integer % divisor == 0
     return false
    end
  end
  true
end

none?的单行(谢谢sawa)

(2...integer).none? {|i| integer % i == 0}