Frist psot
This commit is contained in:
commit
d368cd9468
|
@ -0,0 +1 @@
|
|||
*~
|
|
@ -0,0 +1,16 @@
|
|||
(defun prime-sum-count (n primes)
|
||||
(let ((primes-descending (reverse primes)))
|
||||
(labels ((recurse (primes target)
|
||||
(cond ((= target 0) 1)
|
||||
((< target 0) 0)
|
||||
((null primes) 0)
|
||||
(t (+ (recurse primes (- target (first primes)))
|
||||
(recurse (rest primes) target))))))
|
||||
(recurse primes-descending n))))
|
||||
|
||||
(defun p77 (&key (ways 5000) (prime-count 1000))
|
||||
(let ((primes (get-primes prime-count)))
|
||||
(loop for n upfrom 1
|
||||
for count = (prime-sum-count n primes)
|
||||
until (> count ways)
|
||||
finally (return n))))
|
|
@ -0,0 +1,9 @@
|
|||
(defun get-primes (max)
|
||||
(let ((primes nil)
|
||||
(composites (make-array (1+ max) :initial-element 0)))
|
||||
(loop for n from 2 upto max
|
||||
do (when (= 0 (aref composites n))
|
||||
(push n primes)
|
||||
(loop for m from (* 2 n) upto max by n
|
||||
do (incf (aref composites m)))))
|
||||
(nreverse primes)))
|
Loading…
Reference in New Issue