(* n! means n × (n ? 1) × ... × 3 × 2 × 1 Find the sum of the digits in the number 100! *) open Big_int;; let b0 = big_int_of_int 0;; let b1 = big_int_of_int 1;; let b10 = big_int_of_int 10;; let b100 = big_int_of_int 100;; let rec fact i bf = if (i >= 100) then bf else fact (i+1) (mult_int_big_int i bf) ;; let bn = fact 1 b1;; let rec sumup bn s = if(eq_big_int bn b0) then s else sumup (div_big_int bn b10) ( (int_of_big_int (mod_big_int bn b10))+s ) ;; Printf.printf "%s\n" (string_of_big_int bn);; Printf.printf "%d\n" (sumup bn 0);;