Manually applied Jens Axel's patch to add `random-prime'
This commit is contained in:
parent
e655e97a83
commit
68af24780d
|
@ -12,6 +12,7 @@
|
||||||
|
|
||||||
; primes
|
; primes
|
||||||
nth-prime
|
nth-prime
|
||||||
|
random-prime
|
||||||
next-prime untyped-next-prime
|
next-prime untyped-next-prime
|
||||||
next-primes
|
next-primes
|
||||||
prev-prime untyped-prev-prime
|
prev-prime untyped-prev-prime
|
||||||
|
@ -286,6 +287,14 @@
|
||||||
(for/fold: ([p : Prime 2]) ([m (in-range n)])
|
(for/fold: ([p : Prime 2]) ([m (in-range n)])
|
||||||
(next-prime p))]))
|
(next-prime p))]))
|
||||||
|
|
||||||
|
(: random-prime : Z -> Prime)
|
||||||
|
(define (random-prime n)
|
||||||
|
(when (<= n 2)
|
||||||
|
(raise-argument-error 'random-prime "Natural > 2" n))
|
||||||
|
(define p (random-natural n))
|
||||||
|
(if (prime? p)
|
||||||
|
p
|
||||||
|
(random-prime n)))
|
||||||
|
|
||||||
;;;
|
;;;
|
||||||
;;; FACTORIZATION
|
;;; FACTORIZATION
|
||||||
|
|
|
@ -304,6 +304,18 @@ Returns the @racket[n]th positive prime; @racket[n] must be nonnegative.
|
||||||
(nth-prime 2)]
|
(nth-prime 2)]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@defproc[(random-prime [n Integer]) Natural]{
|
||||||
|
Returns a random prime smaller than @racket[n], which must be greater than @racket[2].
|
||||||
|
|
||||||
|
The function @racket[random-prime] picks random numbers
|
||||||
|
below @racket[n] until a prime is found.
|
||||||
|
|
||||||
|
@interaction[#:eval untyped-eval
|
||||||
|
(random-prime 10)
|
||||||
|
(random-prime 10)
|
||||||
|
(random-prime 10)]
|
||||||
|
}
|
||||||
|
|
||||||
@defproc[(next-prime [z Integer]) Integer]{
|
@defproc[(next-prime [z Integer]) Integer]{
|
||||||
Returns the first prime larger than @racket[z].
|
Returns the first prime larger than @racket[z].
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user