Advertisement
Guest User

Untitled

a guest
Aug 18th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
OCaml 1.05 KB | None | 0 0
  1. #load "nums.cma";;
  2.  
  3. open Big_int;;
  4.  
  5. let est_carre_parfait n =
  6.     let v = (floor (sqrt n)) in
  7.    
  8.     (v *. v = n)
  9. ;;
  10.  
  11.  
  12. let calcule () =
  13.     let sper = ref (big_int_of_int (0)) in
  14.  
  15.     for a = 1 to 333333333 do
  16.         if (a mod 1000000) = 0
  17.             then begin
  18.                 print_int a;
  19.                 print_string "\n"
  20.                 end;
  21.        
  22.         let af = float_of_int a in
  23.         let s1 = (af +. af +. af +. 1.) /. 2. in
  24.         let s2 = (af +. af +. af -. 1.) /. 2. in
  25.    
  26.         let ac1 = s1 *. (s1 -. af) *. (s1 -. af) *. (s1 -. (af +. 1.)) in
  27.         let ac2 = s2 *. (s2 -. af) *. (s2 -. af) *. (s2 -. (af -. 1.)) in
  28.    
  29.         if est_carre_parfait ac1
  30.             then begin     
  31.                 (*Printf.printf "%d %d %d\n" a a (a+1);*)
  32.                
  33.                 if ac1 > 0. then
  34.                     sper := add_big_int (!sper) (big_int_of_int (a + a + a + 1))
  35.                
  36.                 end;
  37.         if est_carre_parfait ac2
  38.             then begin
  39.                 (*Printf.printf "%d %d %d\n" a a (a-1);*)
  40.                  
  41.                  if ac2 > 0. && (a-1) > 0 then
  42.                     sper := add_big_int (!sper) (big_int_of_int (a + a + a - 1))
  43.                 end
  44.     done;
  45.    
  46.     !sper
  47. ;;
  48.  
  49.  
  50.  
  51. Printf.printf "%s\n" (string_of_big_int (calcule ()));;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement