From 3324327b80a50e94843dedbb704683ee9b3a9955 Mon Sep 17 00:00:00 2001 From: bd Date: Sun, 4 Aug 2024 21:01:32 -0600 Subject: Cleanup prime? --- prime/prime-test.scm | 34 ---------------------------------- prime/prime.scm | 17 ----------------- prime?/prime-test.scm | 35 +++++++++++++++++++++++++++++++++++ prime?/prime.scm | 17 +++++++++++++++++ sieve-of-eratosthenes/soe.scm | 2 +- 5 files changed, 53 insertions(+), 52 deletions(-) delete mode 100644 prime/prime-test.scm delete mode 100755 prime/prime.scm create mode 100644 prime?/prime-test.scm create mode 100755 prime?/prime.scm diff --git a/prime/prime-test.scm b/prime/prime-test.scm deleted file mode 100644 index 7c9d557..0000000 --- a/prime/prime-test.scm +++ /dev/null @@ -1,34 +0,0 @@ -(use-modules (srfi srfi-64) - (prime)) - -(test-begin "harness") - - -(test-assert "test-not-prime-0" - (not (prime? 12))) - -(test-assert "test-not-prime-1" - (not (prime? 21))) - -(test-assert "test-prime" - (prime? 13)) - -(test-assert "test-prime-large" - (prime? 1000033)) - -(test-assert "test-two" - (prime? 2)) - -;; one is NOT considered prime! -(test-assert "test-one" - (not (prime? 1))) - -;; zero is NOT considered prime! -(test-assert "test-zero" - (not (prime? 0))) - -(test-assert "test-negative" - (not (prime? -13))) - - -(test-end "harness") diff --git a/prime/prime.scm b/prime/prime.scm deleted file mode 100755 index 89915a1..0000000 --- a/prime/prime.scm +++ /dev/null @@ -1,17 +0,0 @@ -(define-module (prime)) - - -(define-public (prime? n) - "Returns #t if N is prime, else #f." - (if (< n 2) - #f - (prime-helper n (quotient n 2)))) - -(define (prime-helper n d) - "Recursively checks if N is a prime number -by attempting division by number D,D-1,D-2..." - (if (< d 2) - #t - (if (equal? (remainder n d) 0) - #f - (prime-helper n (1- d))))) diff --git a/prime?/prime-test.scm b/prime?/prime-test.scm new file mode 100644 index 0000000..3add85a --- /dev/null +++ b/prime?/prime-test.scm @@ -0,0 +1,35 @@ +;; -*- compile-command: "guile -L . prime-test.scm"; -*- +(use-modules (srfi srfi-64) + (prime)) + +(test-begin "harness") + + +(test-assert "test-not-prime-0" + (not (prime? 12))) + +(test-assert "test-not-prime-1" + (not (prime? 21))) + +(test-assert "test-prime" + (prime? 13)) + +(test-assert "test-prime-large" + (prime? 1000033)) + +(test-assert "test-two" + (prime? 2)) + +;; one is NOT considered prime! +(test-assert "test-one" + (not (prime? 1))) + +;; zero is NOT considered prime! +(test-assert "test-zero" + (not (prime? 0))) + +(test-assert "test-negative" + (not (prime? -13))) + + +(test-end "harness") diff --git a/prime?/prime.scm b/prime?/prime.scm new file mode 100755 index 0000000..3d08a35 --- /dev/null +++ b/prime?/prime.scm @@ -0,0 +1,17 @@ +(define-module (prime)) + + +(define-public (prime? n) + "Returns #t if N is prime, else #f." + + (define (prime-helper n d) + "Recursively checks if N is a prime number +by attempting division by number D,D-1,D-2..." + (cond + ((< d 2) #t) + ((zero? (remainder n d)) #f) + (#t (prime-helper n (1- d))))) + + (if (< n 2) + #f + (prime-helper n (quotient n 2)))) diff --git a/sieve-of-eratosthenes/soe.scm b/sieve-of-eratosthenes/soe.scm index 4b83a97..f0067c4 100644 --- a/sieve-of-eratosthenes/soe.scm +++ b/sieve-of-eratosthenes/soe.scm @@ -15,7 +15,7 @@ (size (length buffer))) (sieve (filter - (lambda (x) (not (eq? (remainder x curr) 0))) + (lambda (x) (not (zero? (remainder x curr)))) buffer) (cons curr accept) size)))) -- cgit v1.2.3