changelog shortlog graph tags branches changeset files revisions annotate raw help

Mercurial > demo / src/tests/prime-test.lisp

changeset 22: ba323d8c0f93
parent: tests/prime-test.lisp@eb8ed24e8a76
author: ellis <ellis@rwest.io>
date: Sat, 03 Jun 2023 22:48:46 -0400
permissions: -rw-r--r--
description: refactor1
1 ;; (defun is-prime(n)
2 ;; (do ((num 2 (+ num 1)))
3 ;; ((> num (/ n 2)) t)
4 ;; (if (= 0 (mod n num))
5 ;; (return-from is-prime nil))))
6 
7 ;; (defun kth-prime(k)
8 ;; (do ((candidate 2 (+ candidate 1)))
9 ;; ((< k 1) (- candidate 1))
10 ;; (when (is-prime candidate)
11 ;; (decf k))))
12 
13 ;; (time (kth-prime 10000))
14 
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))
19 ;; return nil
20 ;; finally (return t)))
21 
22 ;; (defun kth-prime (k)
23 ;; (declare (optimize (speed 3) (safety 0))
24 ;; (fixnum k))
25 ;; (if (zerop k)
26 ;; 2
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))))
30 
31 ;; (declaim
32 ;; (optimize (speed 3) (safety 0))
33 ;; (inline is-prime))
34 
35 ;; (defun is-prime(n)
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))))
42 
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)
49 ;; (decf k))))
50 
51 ;; (time (kth-prime 10000))
52 
53 (declaim (inline is-prime))
54 (defun is-prime (n)
55  (loop for num of-type fixnum from 2 to (ash n -1)
56  when (zerop (mod n num))
57  return nil
58  finally (return t)))
59 
60 (defun kth-prime (k)
61  (declare (optimize (speed 3) (safety 0))
62  (fixnum k))
63  (loop for candidate of-type fixnum from 2
64  when (<= k 0) return (1- candidate)
65  when (is-prime candidate) do (decf k)))
66 
67 (time (kth-prime 10000))