ONLY DO WHAT ONLY YOU CAN DO

こけたら立ちなはれ 立ったら歩きなはれ

F# で Project Euler Problem 10

> prime_sum;;
val it : int = 5
> let mutable prime_sum = 2 + 3;;

val mutable prime_sum : int = 5

> let mutable num       = 5;;

val mutable num : int = 5

> let mutable fPrime    = true;;

val mutable fPrime : bool = true

> let mutable fWhile    = true;;

val mutable fWhile : bool = true

>
- while (num < 2000000) do
-     let num_sqrt        =  sqrt (float num)
-     let mutable odd_num =  3
-     fPrime              <- true
-     fWhile              <- true
-     while (fWhile) do
-         if odd_num > (int num_sqrt) then
-             fWhile <- false
-         elif num % odd_num = 0 then
-             fWhile <- false
-             fPrime <- false
-         else
-             odd_num <- odd_num + 2
-     if fPrime then
-         prime_sum <- prime_sum + num
-     num <- num + 2
- ;;
val it : unit = ()
> prime_sum;;
val it : int = 1179908154

あいやー 同じ失敗!

> prime_sum;;
val it : int64 = 5L
> let mutable prime_sum = 2L + 3L;;

val mutable prime_sum : int64 = 5L

> let mutable num       = 5L;;

val mutable num : int64 = 5L

> let mutable fPrime    = true;;

val mutable fPrime : bool = true

> let mutable fWhile    = true;;

val mutable fWhile : bool = true

>
- while (num < 2000000L) do
-     let num_sqrt        =  sqrt (float num)
-     let mutable odd_num =  3L
-     fPrime              <- true
-     fWhile              <- true
-     while (fWhile) do
-         if odd_num > (int64 num_sqrt) then
-             fWhile <- false
-         elif num % odd_num = 0L then
-             fWhile <- false
-             fPrime <- false
-         else
-             odd_num <- odd_num + 2L
-     if fPrime then
-         prime_sum <- prime_sum + num
-     num <- num + 2L
- ;;
val it : unit = ()
> prime_sum;;
val it : int64 = 142913828922L