Project Euler Problem 3
def sieve(upper) table = Array.new(upper + 1, false) (2 .. upper).inject([]) do |primes, guess| unless table[guess] primes << guess (guess * 2).step(upper, guess) {|n| table[n] = true } end primes end end def f(upper) sieve(Math.sqrt(upper)).select {|n| (upper % n).zero? }.max end p f(13195) p f(600851475143)