Skip to content

Instantly share code, notes, and snippets.

@petdance
Created May 3, 2017 01:47
Show Gist options
  • Save petdance/b2b2bb19d837a94224086ecb0ed39f2e to your computer and use it in GitHub Desktop.
Save petdance/b2b2bb19d837a94224086ecb0ed39f2e to your computer and use it in GitHub Desktop.
defmodule Euler003 do
# http://projecteuler.net/index.php?section=problems&id=3
# The prime factors of 13195 are 5, 7, 13 and 29.
# What is the largest prime factor of the number 600851475143 ?
def largest_prime_factor( n ) do
factors = prime_factors( n )
[largest|_] = factors
IO.write 'Prime factors are '
IO.inspect factors
IO.write 'Largest prime factor is '
IO.inspect largest
end
def prime_factors( n ) do
factor_down( [n], 2 )
end
defp factor_down( [1 | factors], _ ) do
factors
end
defp factor_down( [n | factors], test_factor ) when rem(n,test_factor) == 0 do
factor_down( [ div(n,test_factor), test_factor | factors], test_factor )
end
defp factor_down( [n | factors], test_factor ) do
factor_down( [n | factors], test_factor+1 )
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment