带参数的函数(素数)

时间:2012-04-13 12:26:56

标签: ruby

我想要一个ruby程序,它有2个参数(a,b),它输出Prime a和b之间的数字。这是我的计划。但这是错的。我不知道 问题出在哪儿。有谁可以帮助我?

a,b=ARGV
def prime (a,b)
for i in 2..b
  f=true
    for p in 2...i
      if i%p==0
        f =!f
        break
      end
   end
 print i, "--" if f  
end
end
sushu=prime(a,b)
p "the prime zweischen #{a} and #{b} is #{sushu}."

3 个答案:

答案 0 :(得分:1)

其他答案已经指出你的代码有什么问题(使用字符串而不是整数而不使用参数a。但是,如果你使用的是Ruby 1.9,那么有一种更简单的方法来实现你的代码想:

require 'prime'
def prime(a, b)
  (a..b).select(&:prime?)
end

prime(1,20)
#=> [2, 3, 5, 7, 11, 13, 17, 19]

答案 1 :(得分:0)

您不考虑in参数a。可能会将i更改为从a..b进行迭代,而不是..b将解决您的问题。

a,b=ARGV
def prime (a,b)
for i in a..b
  f=true
    for p in 2...i
      if i%p==0
        f =!f
        break
      end
   end
 print i, "--" if f  
end
end
sushu=prime(a,b)
p "the prime zweischen #{a} and #{b} is #{sushu}."

答案 2 :(得分:0)

尝试

sushu=prime(a.to_i,b.to_i)