使用红宝石中的递归生成一系列素数

时间:2018-12-09 17:55:53

标签: ruby recursion sequence

我正在尝试生成红宝石编号为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

但是我也想知道是否可以递归地进行?有想法吗?

1 个答案:

答案 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}" }