diff options
author | David N. Welton <davidw@efn.org> | 1998-11-09 21:18:01 -0800 |
---|---|---|
committer | Bryan Newbold <bnewbold@robocracy.org> | 2017-02-20 00:05:27 -0800 |
commit | 926b1b647ac830660933a5e63eb52d4a2552e264 (patch) | |
tree | e25db5f6e1441d67f5d9af063432018ee20a5f51 /primes.scm | |
parent | b21cac3362022718634f7086964208b2eed8e897 (diff) | |
parent | fa3f23105ddcf07c5900de47f19af43d1db1b597 (diff) | |
download | slib-926b1b647ac830660933a5e63eb52d4a2552e264.tar.gz slib-926b1b647ac830660933a5e63eb52d4a2552e264.zip |
Import Debian changes 2c3-3debian/2c3-3
slib (2c3-3) frozen unstable; urgency=low
* Fixes #16235.
* Fixes #19943.
* Fixes #20265.
* Fixes #24917.
* Fixes #27389.
slib (2c3-2) frozen unstable; urgency=low
* Re-uploaded for slink freeze.
slib (2c3-1) unstable; urgency=low
* New upstream release.
Diffstat (limited to 'primes.scm')
-rw-r--r-- | primes.scm | 28 |
1 files changed, 17 insertions, 11 deletions
@@ -85,23 +85,26 @@ ;; Is `n' Divisible By a Small Prime? ;; -(define (primes:dbsp? n) - (let ((limit (min (sqrt n) primes:max-small-prime)) - (divisible #f) - ) - (do ((i 0 (1+ i))) - ((let* ((divisor (vector-ref primes:small-primes i))) - (set! divisible (= (modulo n divisor) 0)) - (or divisible (>= divisor limit))) - divisible) - ))) +(define primes:dbsp? + (let ((sqrt (cond ((provided? 'inexact) sqrt) + (else (require 'root) integer-sqrt)))) + (lambda (n) + (let ((limit (min (sqrt n) primes:max-small-prime)) + (divisible #f) + ) + (do ((i 0 (1+ i))) + ((let* ((divisor (vector-ref primes:small-primes i))) + (set! divisible (= (modulo n divisor) 0)) + (or divisible (> divisor limit))) + divisible) + ))))) ;; Does `n' pass the R.-M. primality test for `m' random numbers? ;; (define (primes:rm-prime? n m) (do ((i 0 (1+ i)) - (x (+ 2 (random (- n 2))))) + (x (+ 2 (random (- n 2) primes:prngs)))) ((or (= i m) (primes:rm-composite? n x)) (= i m)))) @@ -150,6 +153,9 @@ (set! y (modulo (* y z) modulus))) )) +(define primes:prngs + (make-random-state "repeatable seed for primes")) + ;; This table seems big enough so that making it larger really ;; doesn't have much effect. ;; |