Perfect numbers: Difference between revisions

Content added Content deleted
No edit summary
(added ocaml)
Line 204: Line 204:
sum == n
sum == n
)</pre>
)</pre>

=={{header|OCaml}}==
<lang ocaml>let perf n =
let sum = ref 0 in
for i = 1 to n-1 do
if n mod i = 0 then
sum := !sum + i
done;
!sum = n</lang>
Functional style:
<lang ocaml>(* range operator *)
let rec (--) a b =
if a > b then
[]
else
a :: (a+1) -- b

let perf n = n = List.fold_left (+) 0 (List.filter (fun i -> n mod i = 0) (1 -- (n-1)))</lang>


=={{header|Perl}}==
=={{header|Perl}}==