Я пытаюсь написать метод, который возвращает n-е простое число.Как создать метод, который возвращает n-мерное число?
Я разработал решение, но проблема в моем методе. Я создаю большой массив чисел, который, кажется, обрабатывается очень медленно. (1..104729).to_a
, если быть точным. Я выбрал 104729, потому что max n
может быть 10000, а 10000-е число - 104729. Я ищу способ оптимизации моего метода.
Это 104729 слишком большое значение? Есть ли способ написать это, чтобы я не создавал большой массив?
Вот метод:
def PrimeMover(num)
def is_prime(x)
i = 0
nums = (2..x).to_a
while nums[i] < nums.max
if x % nums[i] != 0
i += 1
else
return false
end
end
return true
end
primes_arr = (3..104729).to_a.select {|y| is_prime(y)}
primes_arr[num]
end
Возможный дубликат [Как создать первые n простых чисел?] (Http://stackoverflow.com/questions/11673968/how-do-i-generate-the-first-n-prime-numbers) – Humza