Я пытаюсь решить проблему с http://www.beatmycode.com/challenge/5/take, и я написал сценарий:Почему выполнение рубинового скрипта слишком длинное?
def is_prime?(num)
(2...num).each do |divisor|
return false if num % divisor == 0
end
true
end
def circular_prime(num)
circular_primes = []
if num < 2
return false
end
(2..num-1).each do |number|
is_prime?(number)
result = [number.to_s]
(0..number.to_s.size-2).each do |x|
var = result.last.split('')
result << var.unshift(var.pop).join if var.uniq.size != 1
end
circular_primes << result if result.all?{ |x| is_prime? x.to_i }
end
end
Когда я тестировал с 10
, 100
, 1000
и 10_000
, скрипт выполняется очень быстро, но когда я тестировал с 100_000
, в оболочке отображается ошибка Interrupt
. Где слабый момент, и как я могу это исправить?
спасибо, я знаю о 'prime' lib в ruby. Но я не уверен, могу ли я использовать эту библиотеку на beatmycode – vveare139