Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #load "nums.cma";;
- open Big_int;;
- let est_carre_parfait n =
- let v = (floor (sqrt n)) in
- (v *. v = n)
- ;;
- let calcule () =
- let sper = ref (big_int_of_int (0)) in
- for a = 1 to 333333333 do
- if (a mod 1000000) = 0
- then begin
- print_int a;
- print_string "\n"
- end;
- let af = float_of_int a in
- let s1 = (af +. af +. af +. 1.) /. 2. in
- let s2 = (af +. af +. af -. 1.) /. 2. in
- let ac1 = s1 *. (s1 -. af) *. (s1 -. af) *. (s1 -. (af +. 1.)) in
- let ac2 = s2 *. (s2 -. af) *. (s2 -. af) *. (s2 -. (af -. 1.)) in
- if est_carre_parfait ac1
- then begin
- (*Printf.printf "%d %d %d\n" a a (a+1);*)
- if ac1 > 0. then
- sper := add_big_int (!sper) (big_int_of_int (a + a + a + 1))
- end;
- if est_carre_parfait ac2
- then begin
- (*Printf.printf "%d %d %d\n" a a (a-1);*)
- if ac2 > 0. && (a-1) > 0 then
- sper := add_big_int (!sper) (big_int_of_int (a + a + a - 1))
- end
- done;
- !sper
- ;;
- Printf.printf "%s\n" (string_of_big_int (calcule ()));;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement