diff options
author | marcandre <marcandre@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-06-09 02:45:31 +0000 |
---|---|---|
committer | marcandre <marcandre@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-06-09 02:45:31 +0000 |
commit | 3ed18fa8173b9efc7820eba8218eed4c25747fe3 () | |
tree | 37a9326be207e9d96f56a0fe77ff2fc46099b6c7 /lib/prime.rb | |
parent | 0d3591f250bfe90805cac3c2d5bbfcadb720df37 (diff) |
* lib/matrix.rb: Simplify and optimize EratosthenesSieve
based on by Ajay Kumar. [Fixes GH-921] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50800 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | lib/prime.rb | 7 |
1 files changed, 2 insertions, 5 deletions
@@ -425,13 +425,10 @@ class Prime root = Integer(Math.sqrt(segment_max).floor) sieving_primes = @primes[1 .. -1].take_while { |prime| prime <= root } - offsets = Array.new(sieving_primes.size) do |i| - (-(segment_min + 1 + sieving_primes[i]) / 2) % sieving_primes[i] - end segment = ((segment_min + 1) .. segment_max).step(2).to_a - sieving_primes.each_with_index do |prime, index| - composite_index = offsets[index] while composite_index < segment.size do segment[composite_index] = nil composite_index += prime |