0

ルビープログラムが欲しいのですが、2つの引数(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をから繰り返すように変更すると、問題が解決します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 に答える