Use math.primes in project Euler problems
parent
e17a77f5cd
commit
caa2a606c2
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue