15 lines
539 B
OCaml
15 lines
539 B
OCaml
#load "nums.cma";;
|
|
open Num;;
|
|
|
|
for candidate = 2 to 1 lsl 19 do
|
|
let sum = ref (num_of_int 1 // num_of_int candidate) in
|
|
for factor = 2 to truncate (sqrt (float candidate)) do
|
|
if candidate mod factor = 0 then
|
|
sum := !sum +/ num_of_int 1 // num_of_int factor
|
|
+/ num_of_int 1 // num_of_int (candidate / factor)
|
|
done;
|
|
if is_integer_num !sum then
|
|
Printf.printf "Sum of recipr. factors of %d = %d exactly %s\n%!"
|
|
candidate (int_of_num !sum) (if int_of_num !sum = 1 then "perfect!" else "")
|
|
done;;
|