factor n = factor 2 n with factor k n = k : factor k (n div k) if n mod k == 0; = if n>1 then [n] else [] if k*k>n; = factor (k+1) n if k==2; = factor (k+2) n otherwise; end;