23 lines
536 B
OCaml
23 lines
536 B
OCaml
let () =
|
|
(* cache factorials from 0 to 11 *)
|
|
let fact = Array.make 12 0 in
|
|
fact.(0) <- 1;
|
|
for n = 1 to pred 12 do
|
|
fact.(n) <- fact.(n-1) * n;
|
|
done;
|
|
|
|
for b = 9 to 12 do
|
|
Printf.printf "The factorions for base %d are:\n" b;
|
|
for i = 1 to pred 1_500_000 do
|
|
let sum = ref 0 in
|
|
let j = ref i in
|
|
while !j > 0 do
|
|
let d = !j mod b in
|
|
sum := !sum + fact.(d);
|
|
j := !j / b;
|
|
done;
|
|
if !sum = i then (print_int i; print_string " ")
|
|
done;
|
|
print_string "\n\n";
|
|
done
|