我正在尝试生成红宝石编号为b / w的主要编号1-100的列表。我最初是通过一种效果很好的迭代方法完成的。
require 'prime'
def Primenos(n)
Prime.prime?(n)
end
def f1
(1..100).collect do |e|
if Primenos(e)
then p "this is prime - #{e}"
end
end
end
f1
但是我也想知道是否可以递归地进行?有想法吗?
答案 0 :(得分:0)
其他选项:
require 'prime'
def primes_smaller_than(num, res=[])
return res if num < 2
res << num if Prime.prime?(num)
primes_smaller_than(num - 1, res)
end
primes_smaller_than 100
#=> [97, 89, 83, 79, 73, 71, 67, 61, 59, 53, 47, 43, 41, 37, 31, 29, 23, 19, 17, 13, 11, 7, 5, 3, 2]
要打印出来:
primes_smaller_than(100).each { |e| puts "this is prime - #{e}" }