加快红宝石阵列功能 [英] speed up array functions in Ruby

查看:107
本文介绍了加快红宝石阵列功能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个发现素数,使他们在一个数组的简单方法,然后总结他们。什么是一些可能的措施,加快步伐?

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)

阵列#每个好吗?我可以concatinate以不同的方式更快的结果?

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

推荐答案

这应该工作。它采用他人的建议:

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)

这篇关于加快红宝石阵列功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆