let is_prime n = let n = abs n in let rec is_not_divisor d = d * d > n || (n mod d <> 0 && is_not_divisor (d+1)) in n <> 1 && is_not_divisor 2;; let make_list_of_primes up_to_n = let rec iterator(n,lista) = if n > up_to_n then lista else if is_prime n then n::iterator(n+1,lista) else iterator(n+1,lista) in 2::iterator(3,[]);; let rec mlop up = let rec makeList (n, lista) = if n < 2 then lista else n :: lista in makeList (up, []) let rec iloop (n, l) = if n > up then l else if