2012-04-13 89 views
0

我想要一個ruby程序,它有2個參數(a,b),它們輸出a和b之間的Prime 數字。這是我的程序。但這是錯誤的。我不知道 問題在哪裏。誰能幫我?帶參數的函數(素數)

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}." 

回答

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] 
0

你不考慮在參數。可能改變我從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}." 
0

嘗試

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