Advertisement
Guest User

Untitled

a guest
Jul 3rd, 2017
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. exception Break;;
  2.  
  3. let sqrt_int x = int_of_float(sqrt(float_of_int x));;
  4.  
  5. let isPrime x =
  6.   try
  7.     for i=2 to (sqrt_int x) do
  8.       if (x mod i) = 0 then
  9.     raise Break;
  10.     done;
  11.     true;
  12.   with
  13.       Break -> false
  14. ;;
  15.  
  16. let rec primes x =
  17.   let rec loop x i =
  18.     if i = x then
  19.       [x]
  20.     else
  21.       if x mod i = 0 then
  22.     if (isPrime i) then
  23.       i::(primes (x/i))
  24.     else
  25.       (primes i)@(primes (x/i))
  26.       else
  27.     loop x (i+1)
  28.   in
  29.   loop x 2
  30. ;;
  31.  
  32. List.iter (fun x-> print_int x; print_string " ") (primes 18);;
  33.  
  34.  
  35. (*
  36. output:
  37. eni@rocket:~/Documents/code/ocaml$ ocaml primes.ml
  38. 2 3 3
  39. *)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement