Perfect numbers: Difference between revisions

added ocaml
No edit summary
(added ocaml)
Line 204:
sum == n
)</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}}==
Anonymous user