2016-07-26 5 views
0

나는 루비와 함께 작업하고 있으며 아이디어는 주어진 값 아래의 모든 소수를 추가하는 방법을 만드는 것입니다. 내가 지금하는 일은 천만 달러와 같이 더 큰 숫자를 사용할 때 영원히 돌아가는 데 걸리는 시간입니다. 나는 그것이 심지어 큰 숫자와 함께 빠르게 실행하기 위해 아래의 코드를 최적화 할 수있는 방법이 있다면 궁금 해서요다음 방법을 최적화하는 방법

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

루비 1.9가 내장 된 프라임 클래스를 사용할 수있는 :

require 'prime' 
Prime.take_while{|p| p < limit}.reduce(:+) 
관련 문제