# [erlang-questions] learning Erlang: factoring primes

Matthias Lang matthias@REDACTED
Fri May 4 09:50:43 CEST 2007

```The programming style is fine. I only see trivial things which are
hardly worth mentioning:

- You don't need to quote atoms like 'factor' (in your compile comment)
- The program currently hangs for negative numbers

It can be simplified a bit, though it's already pretty good. You can
rewrite next_factor in two clauses like this:

first_factor(N, M) when N rem M == 0 ->
M;
first_factor(N, M) ->
first_factor(N, M+1).

Matthias

Martin Ankerl writes:
> Hello everybody, I have just started learning Erlang and wrote one of
> my first programs. It is a very simple prime factoring program, but it
> this how Erlang code should be written? Any way to make it simpler?
>
> Here is the code:
>
> -module(factor).
> -export([fact/1]).
>
> % c('factor').
> % factor:fact(123456723456789).
> fact(1) ->
>         [];
> fact(N) ->
>         % io:format("~w\n", [N]),
>         M = next_factor(N, 2, N rem 2),
>         [ M | fact(N div M) ].
>
> % find the next factor
> next_factor(_, M, 0) ->
>         M;
> next_factor(N, N, _) ->
>         N;
> next_factor(N, M, _) ->
>         next_factor(N, M+1, N rem (M+1)).
>
> --
> Martin Ankerl | http://martin.ankerl.com
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://www.erlang.org/mailman/listinfo/erlang-questions
>

```