我想要一个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}."
答案 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)