Я пишу метод - prime_numbers
- то, когда передано число n
, возвращается n числа простых чисел. Он не должен полагаться на класс Ruby's Prime
. Он должен вести себя так:Ruby - метод для генерации простых чисел
prime_numbers 3
=> [2, 3, 5]
prime_numbers 5
=> [2, 3, 5, 7, 11]
Моя первая попытка этого метода заключается в следующем:
def prime_numbers(n)
primes = []
i = 2
while primes.length < n do
divisors = (2..9).to_a.select { |x| x != i }
primes << i if divisors.all? { |x| i % x != 0 }
i += 1
end
primes
end
Edit: Как было отмечено, в настоящее время метод виноват, будучи ограничена учитывают делители только до 9. В результате любой совершенный квадрат, состоящий из двух равных простых чисел, больших 9, рассматривается как простое.
Если у кого есть ввод или советы, они могут делиться лучшими способами подхода к этому, было бы весьма полезно.
Ваш метод неверен. Он проверяет только делители в диапазоне «2..9». Как насчет числа 121 (11 * 11)? Это, в соответствии с вашей текущей реализацией. – GolfWolf
http://stackoverflow.com/questions/3594345/ruby-determine-if-a-number-is-a-prime –