【发布时间】:2013-12-09 19:32:39
【问题描述】:
我想将numbers 的数组传递给我的is_prime? 方法并返回数字是否有效。我不想使用:
require 'prime'
a = [1,2,3,4,5]
Hash[a.zip(a.map(&Prime.method(:prime?)))]
这是学习经验。我当前的代码只输出数组中的第一个数字。有人可以帮我理解我做错了什么吗?谢谢!
def is_prime?(*nums)
i = 2
nums.each do |num|
while i < num
is_divisible = ((num % i) == 0)
if is_divisible == false
x = "#{num}: is NOT a prime number." #false
else
x = "#{num}: is a prime number." #true
end
i +=1
end
return x
end
end
puts is_prime?(27,13,42)
【问题讨论】:
-
每个循环中都有一个
return语句。它总是会退出循环。另外,您的is_divisible语句没有意义,为什么将布尔值存储在变量中然后对其进行测试?只需将num % i == 0移动到您的 if 语句条件中。 -
@HunterMcMillen 谢谢我已经按照你的建议更新了代码,但是逻辑仍然不正确,因为我没有得到想要的输出。还有其他建议吗?谢谢。
标签: ruby