prime-factorize.scm 942 B

1234567891011121314151617181920212223242526272829303132
  1. (define (for-each proc l)
  2. (if (null? l)
  3. #t
  4. (begin (proc (car l))
  5. (for-each proc (cdr l)))))
  6. (define (factor^ divisor number)
  7. (if (> (* divisor divisor) number)
  8. (cons number '())
  9. (if (= (modulo number divisor) 0)
  10. (cons divisor (factor^ divisor (quotient number divisor)))
  11. (factor^ (+ divisor 1) number))))
  12. (define (factor number)
  13. (factor^ 2 number))
  14. (define (print-sp x) (print x) (print " "))
  15. (define (print-list l)
  16. (for-each print-sp l)
  17. (newline))
  18. (print-list (factor 111111111111))
  19. (print-list (factor 1111111111111))
  20. (print-list (factor 11111111111111))
  21. (print-list (factor 111111111111111))
  22. (print-list (factor 1111111111111111))
  23. (print-list (factor 11111111111111111))
  24. (print-list (factor 111111111111111111))
  25. ;; (print-list (factor 1111111111111111111)) ;; this ones prime, so takes a long time
  26. ;(print-list (factor 1111111111111111110)) ;; this is fast though