Skip to content

Instantly share code, notes, and snippets.

@vivanov1410
Created August 10, 2012 04:38
Show Gist options
  • Select an option

  • Save vivanov1410/3311110 to your computer and use it in GitHub Desktop.

Select an option

Save vivanov1410/3311110 to your computer and use it in GitHub Desktop.
Exercise #2
prime_sieve = (n) ->
primes = []
numbers = []
numbers[number] = true for number in [2..n]
l = Math.floor Math.sqrt n
main_index = 2
while main_index <= l
prime = 0
index = main_index
if numbers[index]
prime = index
index += prime
while index <= numbers.length
numbers[index] = false
index += prime
main_index += 1
for number, i in numbers
primes.push i if number
primes
prime_factors_of = (number) ->
primes = prime_sieve Math.floor Math.sqrt number
prime_factors = (prime for prime in primes when number % prime is 0)
largest_prime_factor_of = (number) ->
prime_factors = prime_factors_of number
prime_factors[prime_factors.length - 1]
console.time 'timer'
console.log "Largest prime factor of 600851475143 is
#{largest_prime_factor_of 600851475143}"
console.timeEnd 'timer'
> Largest prime factor of 600851475143 is 6857
> timer: 209ms
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment