Sha256: 6e9210c3018d2c6943fff7567aabccc7340d254c4023b316b9dc875c6fc0611a

Contents?: true

Size: 784 Bytes

Versions: 300

Compression:

Stored size: 784 Bytes

Contents

(defpackage #:sieve
  (:use #:cl)
  (:export #:primes-to)
  (:documentation "Generates a list of primes up to a given limit."))

(in-package #:sieve)

(defun primes-to (n)
  "List primes below `n' using sieve of Eratosthenes."
  (loop
     initially (when (< n 3) (return nil))
     with sqrtn = (1+ (isqrt n))
     with sieve = (make-array n
			      :element-type 'boolean
			      :initial-element t)
     for maybe from 2 to sqrtn
     when (aref sieve maybe)
     do
       (loop
          for multi from (* maybe maybe) below n by maybe
          when (aref sieve multi)
          do (setf (aref sieve multi) nil))
     finally (return
               (loop
                  for index from 2 below n
                  when (aref sieve index)
                  collect index))))

Version data entries

300 entries across 300 versions & 1 rubygems

Version Path
trackler-2.2.1.82 tracks/common-lisp/exercises/sieve/example.lisp
trackler-2.2.1.81 tracks/common-lisp/exercises/sieve/example.lisp
trackler-2.2.1.80 tracks/common-lisp/exercises/sieve/example.lisp
trackler-2.2.1.79 tracks/common-lisp/exercises/sieve/example.lisp
trackler-2.2.1.78 tracks/common-lisp/exercises/sieve/example.lisp
trackler-2.2.1.77 tracks/common-lisp/exercises/sieve/example.lisp
trackler-2.2.1.76 tracks/common-lisp/exercises/sieve/example.lisp
trackler-2.2.1.75 tracks/common-lisp/exercises/sieve/example.lisp
trackler-2.2.1.74 tracks/common-lisp/exercises/sieve/example.lisp
trackler-2.2.1.73 tracks/common-lisp/exercises/sieve/example.lisp
trackler-2.2.1.72 tracks/common-lisp/exercises/sieve/example.lisp
trackler-2.2.1.71 tracks/common-lisp/exercises/sieve/example.lisp
trackler-2.2.1.70 tracks/common-lisp/exercises/sieve/example.lisp
trackler-2.2.1.69 tracks/common-lisp/exercises/sieve/example.lisp
trackler-2.2.1.68 tracks/common-lisp/exercises/sieve/example.lisp
trackler-2.2.1.67 tracks/common-lisp/exercises/sieve/example.lisp
trackler-2.2.1.66 tracks/common-lisp/exercises/sieve/example.lisp
trackler-2.2.1.65 tracks/common-lisp/exercises/sieve/example.lisp
trackler-2.2.1.64 tracks/common-lisp/exercises/sieve/example.lisp
trackler-2.2.1.63 tracks/common-lisp/exercises/sieve/example.lisp