如何在100到120代码之间编写ruby素数?

时间:2014-11-22 16:19:53

标签: ruby rspec

我是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

2 个答案:

答案 0 :(得分:3)

您不能将文字数字(例如100120)用作变量名称。它混淆了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