Use math.primes in project Euler problems

db4
Samuel Tardieu 2007-12-27 04:04:39 +01:00
parent e17a77f5cd
commit caa2a606c2
4 changed files with 18 additions and 19 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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