Skip to content

Instantly share code, notes, and snippets.

@agileapplications
Created October 25, 2010 20:38
Show Gist options
  • Save agileapplications/645706 to your computer and use it in GitHub Desktop.
Save agileapplications/645706 to your computer and use it in GitHub Desktop.
Sum all prime numbers until a given number
class PrimeFinder
def initialize
@prime_list = []
@prime_sum = 0
end
def prime?(number)
sqrt = Math.sqrt(number).to_i
@prime_list.each do |prime|
if prime <= sqrt
if number % prime == 0
return false
end
else
break
end
end
@prime_list << number
true
end
def sum_upto(number)
# skip even numbers
(3..number).step(2) do |i|
@prime_sum += i if prime?(i)
end
end
def prime_sum
@prime_sum + 2
end
end
require 'benchmark'
Benchmark.bm do |b|
b.report do
pf = PrimeFinder.new
pf.sum_upto(2000000)
puts pf.prime_sum
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment