mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-20 14:19:18 +02:00
They can be close()d explicitly with close-file-descriptor, and will close() on gc, but only explicitly closing the last port on them will close the fileno. Notably needed for network sockets where we open separate input and output ports on the same socket.
90 lines
2 KiB
Scheme
90 lines
2 KiB
Scheme
|
|
(import (chibi) (chibi math prime) (chibi test))
|
|
|
|
(test-begin "prime")
|
|
|
|
(test 7 (modular-inverse 3 10))
|
|
(test 4 (modular-inverse 3 11))
|
|
(test 27 (modular-inverse 3 40))
|
|
(test 43 (modular-inverse 3 64))
|
|
|
|
(test #f (prime? 1))
|
|
(test #t (prime? 2))
|
|
(test #t (prime? 3))
|
|
(test #f (prime? 4))
|
|
(test #t (prime? 5))
|
|
(test #f (prime? 6))
|
|
(test #t (prime? 7))
|
|
(test #f (prime? 8))
|
|
(test #f (prime? 9))
|
|
(test #f (prime? 10))
|
|
(test #t (prime? 11))
|
|
|
|
(test 2 (nth-prime 0))
|
|
(test 3 (nth-prime 1))
|
|
(test 5 (nth-prime 2))
|
|
(test 7 (nth-prime 3))
|
|
(test 11 (nth-prime 4))
|
|
(test 997 (nth-prime 167))
|
|
(test 1009 (nth-prime 168))
|
|
(test 1013 (nth-prime 169))
|
|
|
|
(test 907 (prime-above 888))
|
|
(test 797 (prime-below 808))
|
|
|
|
(test 1 (totient 2))
|
|
(test 2 (totient 3))
|
|
(test 2 (totient 4))
|
|
(test 4 (totient 5))
|
|
(test 2 (totient 6))
|
|
(test 6 (totient 7))
|
|
(test 4 (totient 8))
|
|
(test 6 (totient 9))
|
|
(test 4 (totient 10))
|
|
|
|
(test #f (perfect? 1))
|
|
(test #f (perfect? 2))
|
|
(test #f (perfect? 3))
|
|
(test #f (perfect? 4))
|
|
(test #f (perfect? 5))
|
|
(test #t (perfect? 6))
|
|
(test #f (perfect? 7))
|
|
(test #f (perfect? 8))
|
|
(test #f (perfect? 9))
|
|
(test #f (perfect? 10))
|
|
(test #t (perfect? 28))
|
|
(test #t (perfect? 496))
|
|
(test #t (perfect? 8128))
|
|
|
|
(test '(1) (factor 1))
|
|
(test '(2) (factor 2))
|
|
(test '(3) (factor 3))
|
|
(test '(2 2) (factor 4))
|
|
(test '(5) (factor 5))
|
|
(test '(2 3) (factor 6))
|
|
(test '(7) (factor 7))
|
|
(test '(2 2 2) (factor 8))
|
|
(test '(3 3) (factor 9))
|
|
(test '(2 5) (factor 10))
|
|
(test '(11) (factor 11))
|
|
(test '(2 2 3) (factor 12))
|
|
|
|
(do ((i 3 (+ i 2)))
|
|
((>= i 101))
|
|
(test (number->string i) (prime? i)
|
|
(probable-prime? i)))
|
|
|
|
(test #t (probable-prime? 4611686020149081683))
|
|
(test #t (probable-prime? 4611686020243253179))
|
|
(test #t (probable-prime? 4611686020243253219))
|
|
(test #t (probable-prime? 4611686020243253257))
|
|
(test #f (probable-prime? 4611686020243253181))
|
|
(test #f (probable-prime? 4611686020243253183))
|
|
(test #f (probable-prime? 4611686020243253247))
|
|
|
|
(test 5
|
|
(modular-expt 7670626353261554806
|
|
5772301760555853353
|
|
(* 2936546443 3213384203)))
|
|
|
|
(test-end)
|