【问题标题】:how to write ruby prime numbers between 100 and 120 code?如何编写 100 到 120 之间的红宝石素数代码?
【发布时间】:2014-11-22 16:19:53
【问题描述】:

我是 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 之间的质数:

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

【问题讨论】:

    标签: ruby rspec


    【解决方案1】:

    您不能使用文字数字(例如 100120)作为变量名。它混淆了 Ruby 解释器。 Ruby 不将您的 100 理解为“我开始并想要更改的数字”,它总是使用确切的值 100。

    首先,将您的定义更改为其中包含变量名的内容:

    def find_prime( from_num, to_num )
    

    然后更改其他代码行以匹配。然后,您需要在最后调用此函数,并使用您要使用的值:

    find_prime( 100, 120 )
    

    您的代码也可能存在其他问题,但我会让您解决这些问题(或者您可以问另一个问题)。以上解释了 Ruby 为问题中的代码给出的错误消息。

    【讨论】:

    • 谢谢你,尼尔。让我更改变量名称,最后将调用该函数并执行。如果代码有任何其他问题,请更新。还建议我如何在 rspec 框架上使用此代码进行测试。
    • @Arun:如果这回答了您原来的问题,请提出一个新问题。不要将其编辑为一个新的和扩展的问题。其他人可能最好回答您关于 rspec 的问题 - 您至少应该开始为您的函数编写一个测试,以帮助回答的人了解您卡在哪里。如果您还没有使用 rpsec 做任何事情,请查看介绍,例如 blog.teamtreehouse.com/an-introduction-to-rspec
    • 当然,尼尔。让我看看博客,我也在通过rspec.codeschool.com/levels/1学习
    【解决方案2】:

    试试这样的

    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
    

    【讨论】:

    • 您能帮我在 rspec 框架上使用相同的代码进行测试或使用大纲来进行测试吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多