#load "nums.cma"
open Big_int;;
let rec sum_of_squares n =
if eq_big_int n unit_big_int then
unit_big_int
else
add_big_int (square_big_int n) (sum_of_squares (pred_big_int n));;
let square_of_sum n =
let rec sum n =
if eq_big_int n unit_big_int then
unit_big_int
else
add_big_int n (sum (pred_big_int n))
in
square_big_int (sum n);;
let s1 = sum_of_squares (big_int_of_int 100);;
let s2 = square_of_sum (big_int_of_int 100);;
let result = sub_big_int s2 s1;;
Printf.printf "%s\n" (string_of_big_int result);;
Сначала написал с использованием встроенных int, перепутал местами суммы при вычитании, получил отрицательный результат, подумал, что проблема с переполнением int, переписал при помощи Big_int, после чего и обнаружил, что перепутал суммы местами.
Aucun commentaire:
Enregistrer un commentaire