stevenspiel
stevenspiel

Reputation: 5999

speed up array functions in Ruby

I have a simple method that finds prime numbers, puts them in an array and then sums them up. What are some possible steps to speed it up?

def prime?(number, array)
  array.each do |x|
    if number % x == 0
      return false
    end
  end
  true
end

def sum_prime(number)
  i = 0
  prime = 1
  output = [2]
  while prime < number
    if prime?(prime, output)
      i += 1
      output << prime if prime != 1
      p prime
    end 
    prime += 2
  end
  output.inject(:+)
end

sum_prime(200000)

is array#each ok? Can I concatinate differently for faster results?

Upvotes: 0

Views: 150

Answers (1)

Will
Will

Reputation: 56

This should work. It uses others' suggestions:

require 'prime'
def sum_prime(limit)
  Prime.each(limit).inject(0) {|sum, num| sum + num}
end
puts sum_prime(200000)

Upvotes: 1

Related Questions