changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > demo / annotate 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
0
ellis <ellis@rwest.io>
parents:
diff changeset
1
 ;; (defun is-prime(n)
ellis <ellis@rwest.io>
parents:
diff changeset
2
 ;;   (do ((num 2 (+ num 1)))
ellis <ellis@rwest.io>
parents:
diff changeset
3
 ;;       ((> num (/ n 2)) t)
ellis <ellis@rwest.io>
parents:
diff changeset
4
 ;;     (if (= 0 (mod n num))
ellis <ellis@rwest.io>
parents:
diff changeset
5
 ;; 	(return-from is-prime nil))))
ellis <ellis@rwest.io>
parents:
diff changeset
6
 
ellis <ellis@rwest.io>
parents:
diff changeset
7
 ;; (defun kth-prime(k)
ellis <ellis@rwest.io>
parents:
diff changeset
8
 ;;   (do ((candidate 2 (+ candidate 1)))
ellis <ellis@rwest.io>
parents:
diff changeset
9
 ;;       ((< k 1) (- candidate 1))
ellis <ellis@rwest.io>
parents:
diff changeset
10
 ;;     (when (is-prime candidate)
ellis <ellis@rwest.io>
parents:
diff changeset
11
 ;;       (decf k))))
ellis <ellis@rwest.io>
parents:
diff changeset
12
 
ellis <ellis@rwest.io>
parents:
diff changeset
13
 ;; (time (kth-prime 10000))
ellis <ellis@rwest.io>
parents:
diff changeset
14
 
ellis <ellis@rwest.io>
parents:
diff changeset
15
 ;; (declaim (inline is-prime))
ellis <ellis@rwest.io>
parents:
diff changeset
16
 ;; (defun is-prime (n)
ellis <ellis@rwest.io>
parents:
diff changeset
17
 ;;   (loop for num of-type fixnum from 3 to (isqrt n) by 2
ellis <ellis@rwest.io>
parents:
diff changeset
18
 ;;         when (zerop (mod n num))
ellis <ellis@rwest.io>
parents:
diff changeset
19
 ;;         return nil
ellis <ellis@rwest.io>
parents:
diff changeset
20
 ;;         finally (return t)))
ellis <ellis@rwest.io>
parents:
diff changeset
21
 
ellis <ellis@rwest.io>
parents:
diff changeset
22
 ;; (defun kth-prime (k)
ellis <ellis@rwest.io>
parents:
diff changeset
23
 ;;   (declare (optimize (speed 3) (safety 0))
ellis <ellis@rwest.io>
parents:
diff changeset
24
 ;;            (fixnum k))
ellis <ellis@rwest.io>
parents:
diff changeset
25
 ;;   (if (zerop k)
ellis <ellis@rwest.io>
parents:
diff changeset
26
 ;;       2
ellis <ellis@rwest.io>
parents:
diff changeset
27
 ;;       (loop for candidate of-type fixnum from 3 by 2
ellis <ellis@rwest.io>
parents:
diff changeset
28
 ;;             when (<= k 0) return (- candidate 2)
ellis <ellis@rwest.io>
parents:
diff changeset
29
 ;;             when (is-prime candidate) do (decf k))))
ellis <ellis@rwest.io>
parents:
diff changeset
30
 
ellis <ellis@rwest.io>
parents:
diff changeset
31
 ;; (declaim
ellis <ellis@rwest.io>
parents:
diff changeset
32
 ;;   (optimize (speed 3) (safety 0))
ellis <ellis@rwest.io>
parents:
diff changeset
33
 ;;   (inline is-prime))
ellis <ellis@rwest.io>
parents:
diff changeset
34
 
ellis <ellis@rwest.io>
parents:
diff changeset
35
 ;; (defun is-prime(n)
ellis <ellis@rwest.io>
parents:
diff changeset
36
 ;;   (declare (fixnum n))
ellis <ellis@rwest.io>
parents:
diff changeset
37
 ;;   (do ((num 2 (+ num 1)))
ellis <ellis@rwest.io>
parents:
diff changeset
38
 ;;       ((> num (floor n 2)) t)
ellis <ellis@rwest.io>
parents:
diff changeset
39
 ;;     (declare (fixnum num))
ellis <ellis@rwest.io>
parents:
diff changeset
40
 ;;     (if (= 0 (mod n num))
ellis <ellis@rwest.io>
parents:
diff changeset
41
 ;;       (return-from is-prime nil))))
ellis <ellis@rwest.io>
parents:
diff changeset
42
 
ellis <ellis@rwest.io>
parents:
diff changeset
43
 ;; (defun kth-prime(k)
ellis <ellis@rwest.io>
parents:
diff changeset
44
 ;;   (declare (fixnum k))
ellis <ellis@rwest.io>
parents:
diff changeset
45
 ;;   (do ((candidate 2 (+ candidate 1)))
ellis <ellis@rwest.io>
parents:
diff changeset
46
 ;;       ((< k 1) (- candidate 1))
ellis <ellis@rwest.io>
parents:
diff changeset
47
 ;;     (declare (fixnum candidate))
ellis <ellis@rwest.io>
parents:
diff changeset
48
 ;;     (when (is-prime candidate)
ellis <ellis@rwest.io>
parents:
diff changeset
49
 ;;       (decf k))))
ellis <ellis@rwest.io>
parents:
diff changeset
50
 
ellis <ellis@rwest.io>
parents:
diff changeset
51
 ;; (time (kth-prime 10000))
ellis <ellis@rwest.io>
parents:
diff changeset
52
 
ellis <ellis@rwest.io>
parents:
diff changeset
53
 (declaim (inline is-prime))
ellis <ellis@rwest.io>
parents:
diff changeset
54
 (defun is-prime (n)
ellis <ellis@rwest.io>
parents:
diff changeset
55
   (loop for num of-type fixnum from 2 to (ash n -1)
ellis <ellis@rwest.io>
parents:
diff changeset
56
         when (zerop (mod n num))
ellis <ellis@rwest.io>
parents:
diff changeset
57
           return nil
ellis <ellis@rwest.io>
parents:
diff changeset
58
         finally (return t)))
ellis <ellis@rwest.io>
parents:
diff changeset
59
 
ellis <ellis@rwest.io>
parents:
diff changeset
60
 (defun kth-prime (k)
ellis <ellis@rwest.io>
parents:
diff changeset
61
   (declare (optimize (speed 3) (safety 0))
ellis <ellis@rwest.io>
parents:
diff changeset
62
            (fixnum k))
ellis <ellis@rwest.io>
parents:
diff changeset
63
   (loop for candidate of-type fixnum from 2
ellis <ellis@rwest.io>
parents:
diff changeset
64
         when (<= k 0) return (1- candidate)
ellis <ellis@rwest.io>
parents:
diff changeset
65
           when (is-prime candidate) do (decf k)))
ellis <ellis@rwest.io>
parents:
diff changeset
66
 
ellis <ellis@rwest.io>
parents:
diff changeset
67
 (time (kth-prime 10000))