fork download
  1. ; trial division
  2.  
  3. (define (prime? n)
  4. (let loop ((f 2))
  5. (if (< n (* f f))
  6. #t
  7. (if (zero? (modulo n f))
  8. #f
  9. (loop (+ f 1))))))
  10.  
  11. (display (prime? 16)) (newline)
  12. (display (prime? 17)) (newline)
  13. (display (prime? 13290059)) (newline)
  14. (display (prime? 600851475143)) (newline)
  15.  
  16. (define (factors n)
  17. (let loop ((n n) (f 2) (fs (list)))
  18. (if (< n (* f f))
  19. (reverse (cons n fs))
  20. (if (zero? (modulo n f))
  21. (loop (/ n f) f (cons f fs))
  22. (loop n (+ f 1) fs)))))
  23.  
  24. (display (factors 16)) (newline)
  25. (display (factors 17)) (newline)
  26. (display (factors 13290059)) (newline)
  27. (display (factors 60085145143)) (newline)
  28.  
Success #stdin #stdout 0.92s 10560KB
stdin
Standard input is empty
stdout
#f
#t
#f
#f
(2 2 2 2)
(17)
(3119 4261)
(117703 510481)