Я новичок в Erlang.
Поставил себе простенькую задачку, а именно сделать ре?ето Ератосфена.
Вот код:
-module(tut).
-export([lines/1,eratosfen/1,division_number/3]).
% Функция которая возвращает последовательность натуральных чисел от 1 до A
lines(2) -> [ 2 ];
lines(A) -> lists:append(lines(A - 1) , [ A ]).
%удаляем из списка все числа, делящиеся на D
division_number(_, LIST, [ ]) -> LIST;
division_number(D, LIST, [ A | C ]) -> if
A rem D == 0 -> division_number(D, LIST, C);
true -> division_number(D, lists:append(LIST, [ A ]), C)
end.
erat([ ] , X) -> X;
erat([ A ] , SIMPLE) -> erat([ ], lists:append(SIMPLE, [ A ]));
erat([A | B] , SIMPLE) -> erat(division_number(A, [ ], B), lists:append(SIMPLE, [ A ])).
%ре?ето эратосфена
eratosfen( A ) -> erat(lines(A), [ ]).
Все отлично работает, но вывод обрезает результаты:
80> tut:eratosfen(10).
[2,3,5,7]
81> tut:eratosfen(100).
[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,
79,83,89,97]
82> tut:eratosfen(1000).
[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,
79,83,89,97,101,103,107,109|...]
83> tut:eratosfen(10000).
[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,
79,83,89,97,101,103,107,109|...]
А как вывести полностью список ?
P.S. Критика исходного кода приветсвуется по части оформления, ну и реализации тоже.
Спасибо.
