Created
August 10, 2012 04:38
-
-
Save vivanov1410/3311110 to your computer and use it in GitHub Desktop.
Exercise #2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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