我正在尝试编写一个方法,它需要一个数字并检查它是否为素数。在做一些研究之后,快速检查方法是将数字除以2和sqrt之间的每个数字(我们检查的数字)。我希望我的方法在素数时返回true,否则返回false。检查红宝石中的素数
因此,我试图编写代码,使我有逻辑意义,但我得到一个错误。下面是我写:
def PrimeTime(num)
counter = 2
while counter <= Math.sqrt(num).ceil
(counter == Math.sqrt(num).ceil) ? "false"
(num % counter == 0) ? "true" : counter += 1
end
end
这给了我
(eval):429: (eval):429: compile error (SyntaxError)
(eval):422: syntax error, unexpected '\n'
重写代码
def prime?(num)
(2..Math.sqrt(num).ceil).to_a.each do |number|
if num % number == 0
return false
else
return true
end
end
end
仅供参考,这不是功课。我正在经历coderbyte问题。任何帮助表示赞赏!
“我建议你算出算法应该是什么。必要时用英文书写。然后确保你正确地将它转换为Ruby“ - [Cucumber](http://cukes.info/),例如。阅读[Rpec Book](http://www.amazon.com/RSpec-Book-行为发展 - 黄瓜/ dp/1934356379/ref = sr_1_1?s = books&ie = UTF8&qid = 1410408767&sr = 1-1&keywords = the + rspec + book) – 2014-09-11 04:13:50
@ J-Dizzle:我认为这对于一个挣扎着语法和基本的流程控制,我看到的Ruby + TDD的最佳介绍是[RubyKoans](http://rubykoans.com/) – Amadan 2014-09-11 04:21:51