Однопроходный алгоритм линейной сложности. program FactSum;
var
fact, sum: integer;
i: integer;
begin
fact := 1;
sum := 0;
for i := 1 to 5 do begin
fact := fact * i;
sum := sum + fact;
end;
writeln('Сумма факториалов: ', sum)
end. Для сравнения, у обоих алгоритмов предыдущих ораторов сложность - квадратичная: внутри цикла они крутят ещё один цикл, чтобы снова и снова вычислять те же самые произведения, которые они уже вычисляли.