add factor-alist and export it (chibi math prime)

a more useful version of factor
This commit is contained in:
Roger Crew 2021-06-27 04:50:42 -07:00
parent 680aede9ae
commit 2759aaa306
3 changed files with 16 additions and 1 deletions

View file

@ -90,6 +90,11 @@
(test '(3 3 3 5 7) (factor 945))
(test-error (factor 0))
(test '() (factor-alist 1))
(test '((2 . 3) (3 . 2)) (factor-alist 72))
(test '((3 . 3) (5 . 1) (7 . 1)) (factor-alist 945))
(test-error (factor-alist 0))
(test 0 (aliquot 1))
(test 975 (aliquot 945))
(test-error (aliquot 0))

View file

@ -226,6 +226,15 @@
(lp (+ i 2) (+ ii (* (+ i 1) 4))
n (put res i k)))))))))))))
;;> Returns the factorization of \var{n} as a list of
;;> elements of the form \scheme{(\var{p} . \var{k})},
;;> where \var{p} is a prime factor
;;> and \var{k} is its multiplicity.
(define factor-alist
(let ((rfactor (make-factorizer '()
(lambda (l p k) (cons (cons p k) l)))))
(lambda (n) (reverse (rfactor n)))))
;;> Returns the factorization of \var{n} as a monotonically
;;> increasing list of primes.
(define (factor n)

View file

@ -5,7 +5,8 @@
((library (srfi 151)) (import (srfi 151)))
((library (srfi 33)) (import (srfi 33)))
(else (import (srfi 60))))
(export prime? nth-prime prime-above prime-below factor perfect?
(export prime? nth-prime prime-above prime-below
factor factor-alist perfect?
totient aliquot
provable-prime? probable-prime?
random-prime random-prime-distinct-from