fun prime n =
let
val a = List.tabulate (n - 1, fn x => x + 2)
fun loop [] = []
| loop (x::xs) =
x :: loop (List.filter (fn i => i mod x <> 0) xs)
in
loop a
end
fun goedel (n : IntInf.int) =
let
open IntInf
val p = map fromInt (prime 100)
val a = map (valOf o Int.fromString o str) ((explode o toString) n)
in
toString (ListPair.foldl (fn (x, y, z) => pow (x, y) * z) 1 (p, a))
end
fun println s = print (s ^ "\n")
val _ = println (goedel 9)
val _ = println (goedel 81)
val _ = println (goedel 230)
val _ = println (goedel 19425463134)
omoikani
#4677()
[
StandardML
]
Rating0/0=0.00
素数生成が間違っていたので修正。 ついでに多倍長整数を使って、Overflowしないようにしてみた。
fun prime n = let val a = List.tabulate (n - 1, fn x => x + 2) fun loop [] = [] | loop (x::xs) = x :: loop (List.filter (fn i => i mod x <> 0) xs) in loop a end fun goedel (n : IntInf.int) = let open IntInf val p = map fromInt (prime 100) val a = map (valOf o Int.fromString o str) ((explode o toString) n) in toString (ListPair.foldl (fn (x, y, z) => pow (x, y) * z) 1 (p, a)) end fun println s = print (s ^ "\n") val _ = println (goedel 9) val _ = println (goedel 81) val _ = println (goedel 230) val _ = println (goedel 19425463134)Rating0/0=0.00-0+