diff --git a/extra/project-euler/003/003.factor b/extra/project-euler/003/003.factor index 87db922e5f..2b229aa11b 100644 --- a/extra/project-euler/003/003.factor +++ b/extra/project-euler/003/003.factor @@ -1,6 +1,6 @@ ! Copyright (c) 2007 Aaron Schaefer. ! See http://factorcode.org/license.txt for BSD license. -USING: kernel math project-euler.common sequences ; +USING: math.primes.factors sequences ; IN: project-euler.003 ! http://projecteuler.net/index.php?section=problems&id=3 @@ -17,12 +17,12 @@ IN: project-euler.003 ! -------- : largest-prime-factor ( n -- factor ) - prime-factors supremum ; + factors supremum ; : euler003 ( -- answer ) - 317584931803 largest-prime-factor ; + 317584931803 largest-prime-factor ; -! [ euler003 ] 100 ave-time -! 404 ms run / 9 ms GC ave time - 100 trials +! [ euler003 ] time +! 2 ms run / 0 ms GC time MAIN: euler003 diff --git a/extra/project-euler/007/007.factor b/extra/project-euler/007/007.factor index 0a9cd98865..12f06972a9 100644 --- a/extra/project-euler/007/007.factor +++ b/extra/project-euler/007/007.factor @@ -1,6 +1,6 @@ ! Copyright (c) 2007 Aaron Schaefer. ! See http://factorcode.org/license.txt for BSD license. -USING: kernel math math.miller-rabin ; +USING: lazy-lists math math.primes ; IN: project-euler.007 ! http://projecteuler.net/index.php?section=problems&id=7 @@ -18,12 +18,12 @@ IN: project-euler.007 ! -------- : nth-prime ( n -- n ) - 2 swap 1- [ next-prime ] times ; + 1 - lprimes lnth ; : euler007 ( -- answer ) - 10001 nth-prime ; + 10001 nth-prime ; ! [ euler007 ] time -! 19230 ms run / 487 ms GC time +! 22 ms run / 0 ms GC time MAIN: euler007 diff --git a/extra/project-euler/010/010.factor b/extra/project-euler/010/010.factor index 055e902776..e22d3bc39c 100644 --- a/extra/project-euler/010/010.factor +++ b/extra/project-euler/010/010.factor @@ -1,7 +1,6 @@ ! Copyright (c) 2007 Aaron Schaefer, Samuel Tardieu. ! See http://factorcode.org/license.txt for BSD license. -USING: arrays kernel lazy-lists math math.erato math.functions math.ranges - namespaces sequences ; +USING: math.primes sequences ; IN: project-euler.010 ! http://projecteuler.net/index.php?section=problems&id=10 @@ -17,12 +16,12 @@ IN: project-euler.010 ! SOLUTION ! -------- -! Sieve of Eratosthenes and lazy summing +! Summing of prime numbers : euler010 ( -- answer ) - 0 1000000 lerato [ + ] leach ; + 1000000 primes-upto sum ; -! [ euler010 ] time -! 765 ms run / 7 ms GC time +! [ euler010 ] 100 ave-time +! 14 ms run / 0 ms GC ave time - 100 trials MAIN: euler010 diff --git a/extra/project-euler/134/134.factor b/extra/project-euler/134/134.factor index b30b0073d2..90d8404760 100644 --- a/extra/project-euler/134/134.factor +++ b/extra/project-euler/134/134.factor @@ -1,6 +1,6 @@ ! Copyright (c) 2007 Samuel Tardieu. ! See http://factorcode.org/license.txt for BSD license. -USING: arrays kernel math.algebra math math.functions math.primes.list +USING: arrays kernel lazy-lists math.algebra math math.functions math.primes math.ranges sequences ; IN: project-euler.134 @@ -23,9 +23,9 @@ IN: project-euler.134 ! SOLUTION ! -------- -! Compute the smallest power of 10 greater than m +! Compute the smallest power of 10 greater than m or equal to it : next-power-of-10 ( m -- n ) - 10 swap log 10 log / >integer [ 10 * ] times ; foldable + 10 swap log 10 log / ceiling >integer ^ ; foldable ! Compute S for a given pair (p1, p2) -- that is the smallest positive ! number such that X = p1 [npt] and X = 0 [p2] (npt being the smallest @@ -34,7 +34,7 @@ IN: project-euler.134 over 0 2array rot next-power-of-10 rot 2array chinese-remainder ; : euler134 ( -- answer ) - primes-under-million 2 tail dup 1 tail 1000003 add [ s ] 2map sum ; + 5 lprimes-from [ 1000000 > ] luntil [ [ s + ] keep ] leach drop ; ! [ euler134 ] 10 ave-time ! 6743 ms run / 79 ms GC ave time - 10 trials