2016-07-26 2 views
0

Я работаю с ruby, и идея заключается в создании метода, который добавляет все простые числа ниже заданного значения. То, что у меня есть сейчас, но когда я использую более крупные цифры, например, 10 миллионов, требуется бесконечная работа. Мне было интересно, если есть способ, которым я мог бы оптимизировать код, приведенный ниже, чтобы сделать его работать быстрее, даже с такими большими числамиКак оптимизировать следующий метод

def self.sum_to(limit) 
    primes = (2..limit).select do |n| 
    (2..Math.sqrt(n)).none? do |i| 
     (n % i).zero? 
    end 
    end 

    sum = primes.reduce(:+) 
end 

puts Primes.sum_to(10000000) 

ответ

2

Ruby 1.9 имеет встроенный премьер-класса, который вы могли бы использовать:

require 'prime' 
Prime.take_while{|p| p < limit}.reduce(:+) 
Смежные вопросы