fork(3) download
  1. (define (hcn n)
  2. (let ((divs (make-vector (+ n 1) 0)))
  3. (do ((i 1 (+ i 1))) ((<= n i))
  4. (do ((j i (+ j i))) ((<= n j))
  5. (vector-set! divs j (+ 1 (vector-ref divs j)))))
  6. (let loop ((i 1) (record 0) (hcns (list)))
  7. (if (<= n i) (reverse hcns)
  8. (if (< record (vector-ref divs i))
  9. (loop (+ i 1) (vector-ref divs i) (cons i hcns))
  10. (loop (+ i 1) record hcns))))))
  11.  
  12. (display (hcn 10000)) (newline)
Success #stdin #stdout 3.15s 9288KB
stdin
Standard input is empty
stdout
(1 2 4 6 12 24 36 48 60 120 180 240 360 720 840 1260 1680 2520 5040 7560)