首页 文章

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

提问于
浏览
0

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

  • 1

    你've got a logic problem. The program returns true for any number that'不能被2整除 . 所以,只需在循环完全执行后放入 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

    另一种方法,从变量设置为true开始 .

    def prime?(integer)
      (2..integer - 1).each {|x| return false if (integer % x) == 0 }
      true
    end
    

相关问题