0

我想要一个 ruby​​ 程序,它有 2 个 Arguments(a,b) ,它输出 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}."
4

3 回答 3

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]
于 2012-04-13T12:42:59.247 回答
0

您不考虑 in 参数 a。可能将 i 更改为 iterate from 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}."
于 2012-04-13T12:31:04.023 回答
0

尝试

sushu=prime(a.to_i,b.to_i)
于 2012-04-13T12:34:11.700 回答