35 lines
982 B
Text
35 lines
982 B
Text
; the first twenty primes
|
|
(primes 20)
|
|
→ { 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 }
|
|
|
|
; a stream to generate primes from a
|
|
(define (primes-from a)
|
|
(let ((p (next-prime a)))
|
|
(stream-cons p (primes-from p))))
|
|
|
|
; primes between 100,150
|
|
(for/list ((p (primes-from 100))) #:break (> p 150) p)
|
|
→ (101 103 107 109 113 127 131 137 139 149)
|
|
|
|
; the built-in function (primes-pi )counts the number of primes < a
|
|
; count in [7700 ... 8000]
|
|
(- (primes-pi 8000) (primes-pi 7700) → 30
|
|
|
|
; nth-prime
|
|
(nth-prime 10000) → 104729
|
|
|
|
;; big ones
|
|
(lib 'bigint)
|
|
(define (p-digits n)
|
|
(printf "(next-prime %d ! ) has %d digits" n
|
|
(number-length (next-prime (factorial n )))))
|
|
|
|
(next-prime 0! ) has 1 digits
|
|
(next-prime 10! ) has 7 digits
|
|
(next-prime 100! ) has 158 digits
|
|
(next-prime 200! ) has 375 digits
|
|
(next-prime 300! ) has 615 digits
|
|
(next-prime 400! ) has 869 digits ;; 9400 msec (FireFox)
|
|
|
|
; is prime (1 + 116!) ?
|
|
(prime? (1+ (factorial 116))) → #t
|