From 695daa2df6cf556d087f859d8cb3ca2f3efec2f9 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sun, 2 Feb 2014 20:40:59 -0500 Subject: Solve problem 10. --- problem-10.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 problem-10.scm diff --git a/problem-10.scm b/problem-10.scm new file mode 100644 index 0000000..d984831 --- /dev/null +++ b/problem-10.scm @@ -0,0 +1,23 @@ +(use-modules (srfi srfi-1)) + +(define (divisible? m n) + (zero? (modulo m n))) + +(define (prime-sieve n) + (define (mark-multiples! bits x) + (define (mark y) + (when (< y n) + (bitvector-set! bits (1- y) #t) + (mark (+ y x)))) + (mark x)) + (define (sieve m primes bits) + (cond ((= m n) + primes) + ((bitvector-ref bits (1- m)) + (sieve (1+ m) primes bits)) + (else + (mark-multiples! bits m) + (sieve (1+ m) (cons m primes) bits)))) + (sieve 2 '() (make-bitvector n))) + +(reduce + 0 (prime-sieve 2000000)) -- cgit v1.2.3