Comment detail
Meertens数 (Nested Flatten)This comment is reply for 4921 kozima: 面白くはないけど、これでちょっと速くなり...(Meertens数). Go to thread root.
そっか、そこ刈れてなかったんですね。それなら f の繰り返しを再帰呼び出しにするとまだ速くなります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | --- 4926.sml 2007-12-22 15:37:01.000000000 +0900
+++ meertens.sml 2007-12-22 15:36:18.000000000 +0900
@@ -26,11 +26,12 @@
loop x y
end
- fun f x = let
+ fun f [] = ()
+ | f (x::xs) = let
val pp = pow (p, x)
in
if pp <= bound then
- loop ps bs (bound div pp) (prod * pp) (sum + b * x) 0
+ (loop ps bs (bound div pp) (prod * pp) (sum + b * x) 0; f xs)
else ()
end
@@ -38,7 +39,7 @@
val lst = if start = 0 then [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
else [1, 2, 3, 4, 5, 6, 7, 8, 9]
in
- app f lst
+ f lst
end
in
app (fn i => loop p (basis i) (IntInf.pow (10, i)) 1 0 1) lst
|





omoikani
#4926()
[
diff
]
Rating0/0=0.00
独自のpowでさらに枝刈り。20桁での時間は約4時間までになりました。
Rating0/0=0.00-0+