我是ruby和rspec的初学者,我多么喜欢学习ruby并尝试通过rspec框架进行测试我不确定我在做什么是正确的,如果有任何请建议。
我在ruby中写了素数程序。执行ruby时,我收到了下面指定的语法错误。我也想知道如何在rspec框架中使用这个素数。
错误:
$ruby main.rb
main.rb:3: syntax error, unexpected tINTEGER, expecting ')'
def find_prime(100,120)
^
main.rb:3: warning: possibly useless use of a literal in void context
100和120之间的PRIME编号:
def find_prime(100,120)
prime = []
while (100 <= 120)
prime_flag = true
i = 2
while (i <= 100/2)
if 100%i == 0
prime_flag = false
break
end
i +=1
end
if prime_flag
prime << 100
end
100+=1
end
prime
end
答案 0 :(得分:3)
您不能将文字数字(例如100
或120
)用作变量名称。它混淆了Ruby解释器。 Ruby不理解你的100
是&#34;我开始的数字,想要改变&#34;,它总是使用确切的值100。
首先,将您的定义更改为包含变量名称的内容:
def find_prime( from_num, to_num )
然后更改其他代码行以匹配。然后,您需要在结尾调用此函数,并使用您要使用的值:
find_prime( 100, 120 )
您的代码可能还有其他问题,但我会让您解决这些问题(或者您可以提出另一个问题)。以上解释了Ruby为问题中的代码提供的错误消息。
答案 1 :(得分:1)
尝试这样的事情
def prime?(n)
[*2..n/2].none?{|i|(n % i).zero?} ? true : false
end
for i in 100..120
print i if prime?(i)
end