Use math.primes in project Euler problems
parent
e17a77f5cd
commit
caa2a606c2
|
@ -1,6 +1,6 @@
|
||||||
! Copyright (c) 2007 Aaron Schaefer.
|
! Copyright (c) 2007 Aaron Schaefer.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! 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
|
IN: project-euler.003
|
||||||
|
|
||||||
! http://projecteuler.net/index.php?section=problems&id=3
|
! http://projecteuler.net/index.php?section=problems&id=3
|
||||||
|
@ -17,12 +17,12 @@ IN: project-euler.003
|
||||||
! --------
|
! --------
|
||||||
|
|
||||||
: largest-prime-factor ( n -- factor )
|
: largest-prime-factor ( n -- factor )
|
||||||
prime-factors supremum ;
|
factors supremum ;
|
||||||
|
|
||||||
: euler003 ( -- answer )
|
: euler003 ( -- answer )
|
||||||
317584931803 largest-prime-factor ;
|
317584931803 largest-prime-factor ;
|
||||||
|
|
||||||
! [ euler003 ] 100 ave-time
|
! [ euler003 ] time
|
||||||
! 404 ms run / 9 ms GC ave time - 100 trials
|
! 2 ms run / 0 ms GC time
|
||||||
|
|
||||||
MAIN: euler003
|
MAIN: euler003
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
! Copyright (c) 2007 Aaron Schaefer.
|
! Copyright (c) 2007 Aaron Schaefer.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! 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
|
IN: project-euler.007
|
||||||
|
|
||||||
! http://projecteuler.net/index.php?section=problems&id=7
|
! http://projecteuler.net/index.php?section=problems&id=7
|
||||||
|
@ -18,12 +18,12 @@ IN: project-euler.007
|
||||||
! --------
|
! --------
|
||||||
|
|
||||||
: nth-prime ( n -- n )
|
: nth-prime ( n -- n )
|
||||||
2 swap 1- [ next-prime ] times ;
|
1 - lprimes lnth ;
|
||||||
|
|
||||||
: euler007 ( -- answer )
|
: euler007 ( -- answer )
|
||||||
10001 nth-prime ;
|
10001 nth-prime ;
|
||||||
|
|
||||||
! [ euler007 ] time
|
! [ euler007 ] time
|
||||||
! 19230 ms run / 487 ms GC time
|
! 22 ms run / 0 ms GC time
|
||||||
|
|
||||||
MAIN: euler007
|
MAIN: euler007
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
! Copyright (c) 2007 Aaron Schaefer, Samuel Tardieu.
|
! Copyright (c) 2007 Aaron Schaefer, Samuel Tardieu.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: arrays kernel lazy-lists math math.erato math.functions math.ranges
|
USING: math.primes sequences ;
|
||||||
namespaces sequences ;
|
|
||||||
IN: project-euler.010
|
IN: project-euler.010
|
||||||
|
|
||||||
! http://projecteuler.net/index.php?section=problems&id=10
|
! http://projecteuler.net/index.php?section=problems&id=10
|
||||||
|
@ -17,12 +16,12 @@ IN: project-euler.010
|
||||||
! SOLUTION
|
! SOLUTION
|
||||||
! --------
|
! --------
|
||||||
|
|
||||||
! Sieve of Eratosthenes and lazy summing
|
! Summing of prime numbers
|
||||||
|
|
||||||
: euler010 ( -- answer )
|
: euler010 ( -- answer )
|
||||||
0 1000000 lerato [ + ] leach ;
|
1000000 primes-upto sum ;
|
||||||
|
|
||||||
! [ euler010 ] time
|
! [ euler010 ] 100 ave-time
|
||||||
! 765 ms run / 7 ms GC time
|
! 14 ms run / 0 ms GC ave time - 100 trials
|
||||||
|
|
||||||
MAIN: euler010
|
MAIN: euler010
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
! Copyright (c) 2007 Samuel Tardieu.
|
! Copyright (c) 2007 Samuel Tardieu.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! 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 ;
|
math.ranges sequences ;
|
||||||
IN: project-euler.134
|
IN: project-euler.134
|
||||||
|
|
||||||
|
@ -23,9 +23,9 @@ IN: project-euler.134
|
||||||
! SOLUTION
|
! 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 )
|
: 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
|
! 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
|
! 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 ;
|
over 0 2array rot next-power-of-10 rot 2array chinese-remainder ;
|
||||||
|
|
||||||
: euler134 ( -- answer )
|
: 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
|
! [ euler134 ] 10 ave-time
|
||||||
! 6743 ms run / 79 ms GC ave time - 10 trials
|
! 6743 ms run / 79 ms GC ave time - 10 trials
|
||||||
|
|
Loading…
Reference in New Issue