euler/erlang/e003.erl

37 lines
784 B
Erlang
Raw Normal View History

2011-09-24 03:56:21 +00:00
% Find the largest prime factor of a composite number.
% The prime factors of 13195 are 5, 7, 13 and 29.
% What is the largest prime factor of the number 600851475143 ?
-module(e003).
-export([
main/1,
pfactor/1
]).
pfactor(N) ->
pfactor_(N, []).
pfactor_(N, F) ->
Next = pfactor_next(N, 2),
if
Next == N ->
[N | F];
true ->
pfactor_(trunc(N / Next), [Next | F])
end.
pfactor_next(N, Factor) ->
if
Factor == N ->
Factor;
N rem Factor == 0 ->
Factor;
true ->
pfactor_next(N, Factor + 1)
end.
main(_) ->
io:format("Prime Factors of 13195: ~w~n", [pfactor(13195)]),
io:format("Prime Factors of 600851475143: ~w~n", [pfactor(600851475143)]).