用于识别素数的自定义Ruby方法(错误帮助)

时间:2014-11-14 05:36:18

标签: ruby methods primes

我遇到了Coderbyte的Prime Time问题。链接是: http://www.coderbyte.com/CodingArea/GuestEditor.php?ct=Prime%20Time&lan=Ruby

def PrimeTime(num)

    for i in 1..num
    if (num % i) == 0
        return false
    else 
        return true
    end
end
end

当我通过repl.it运行时,我没有错误,但是当我尝试传递一个整数时,我收到以下错误:

(eval):11:(eval):11:编译错误(SyntaxError) (eval):11:语法错误,意外的tINTEGER,期待')' def PrimeTime(10)

有谁知道为什么?

谢谢!

3 个答案:

答案 0 :(得分:1)

def is_prime?(number) 
  is_prime = true

  (2..number/2).each do |i| 
    if (number % i == 0) 
      is_prime = false 
      break
    end
  end

  return is_prime == true && number > 1 ? true : false
end

使用以下示例循环验证上述功能是否按预期工作:

(1..20).each do |number|
  result = is_prime?(number) 
  puts "#{number} ---- -- -> #{result}" 
end

答案 1 :(得分:0)

基于该错误消息,我猜你试图像这样调用这个方法吗?

def PrimeTime(10)

?如果是这样,那不是你如何称呼方法。试试这个:

PrimeTime(10)

答案 2 :(得分:0)

这是一种丑陋的方式。任何人都知道如何清理它以适应1被传递?

def PrimeTime(num)
if num == 1
    return true
end
    for i in 2...num
    if (num % i) == 0
        return false
    else 
        return true
    end
end
end