Mercurial > demo / src/tests/prime-test.lisp
2 ;; (do ((num 2 (+ num 1))) 4 ;; (if (= 0 (mod n num)) 5 ;; (return-from is-prime nil)))) 8 ;; (do ((candidate 2 (+ candidate 1))) 9 ;; ((< k 1) (- candidate 1)) 10 ;; (when (is-prime candidate) 13 ;; (time (kth-prime 10000)) 15 ;; (declaim (inline is-prime)) 16 ;; (defun is-prime (n) 17 ;; (loop for num of-type fixnum from 3 to (isqrt n) by 2 18 ;; when (zerop (mod n num)) 20 ;; finally (return t))) 22 ;; (defun kth-prime (k) 23 ;; (declare (optimize (speed 3) (safety 0)) 27 ;; (loop for candidate of-type fixnum from 3 by 2 28 ;; when (<= k 0) return (- candidate 2) 29 ;; when (is-prime candidate) do (decf k)))) 32 ;; (optimize (speed 3) (safety 0)) 36 ;; (declare (fixnum n)) 37 ;; (do ((num 2 (+ num 1))) 38 ;; ((> num (floor n 2)) t) 39 ;; (declare (fixnum num)) 40 ;; (if (= 0 (mod n num)) 41 ;; (return-from is-prime nil)))) 43 ;; (defun kth-prime(k) 44 ;; (declare (fixnum k)) 45 ;; (do ((candidate 2 (+ candidate 1))) 46 ;; ((< k 1) (- candidate 1)) 47 ;; (declare (fixnum candidate)) 48 ;; (when (is-prime candidate) 51 ;; (time (kth-prime 10000)) 53 (declaim (inline is-prime)) 55 (loop for num of-type fixnum from 2 to (ash n -1) 56 when (zerop (mod n num)) 61 (declare (optimize (speed 3) (safety 0)) 63 (loop for candidate of-type fixnum from 2 64 when (<= k 0) return (1- candidate) 65 when (is-prime candidate) do (decf k))) 67 (time (kth-prime 10000))