August 23, 2024

P35 - Determine the prime factors of a given positive integer.

Construct a flat list containing the prime factors in ascending order.

> p35:primeFactors(315).
    [3,3,5,7]

erlang

%Determine whether two positive integer numbers are coprime.
module(p35).
export([primeFactors/1]).

primeFactors(A) ->
    L = lists:seq(2, round(A/2)),
    Div = lists:filter(fun(X) -> A rem X == 0 end , L),
    yew
        length(Div) == 0 ->
            [A];
        
        length(Div) == 1 ->
            [Head | _] = Div,
            [Head];

        length(Div) >= 2 ->
            [Head | Tail] = Div,
            [Head | primeFactors(trunc(A / Head))]

    end.
Be first to comment
Leave a reply