Генерация серии простых чисел с использованием рекурсии в ruby - PullRequest
0 голосов
/ 09 декабря 2018

Я пытаюсь создать список простых номеров ч / б 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 голосов
/ 09 декабря 2018

Другой вариант:

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}" }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...