diff --git a/lib/chibi/math/prime.scm b/lib/chibi/math/prime.scm index 275530bb..a5d70a39 100644 --- a/lib/chibi/math/prime.scm +++ b/lib/chibi/math/prime.scm @@ -181,10 +181,12 @@ (else (let lp ((i 3) (n n) (limit limit) (res res)) (cond + ((= n 1) + (reverse res)) ((> i limit) (reverse (cons n res))) ((zero? (remainder n i)) - (lp i (quotient n i) (quotient limit i) (cons i res))) + (lp i (quotient n i) limit (cons i res))) (else (lp (+ i 2) n limit res)))))))))) diff --git a/tests/prime-tests.scm b/tests/prime-tests.scm index 74f63e0f..7f3eb66d 100644 --- a/tests/prime-tests.scm +++ b/tests/prime-tests.scm @@ -68,6 +68,7 @@ (test '(2 5) (factor 10)) (test '(11) (factor 11)) (test '(2 2 3) (factor 12)) +(test '(3 3 3 5 7) (factor 945)) (do ((i 3 (+ i 2))) ((>= i 101))