(define (hcn n)
  (let ((divs (make-vector (+ n 1) 0)))
    (do ((i 1 (+ i 1))) ((<= n i))
      (do ((j i (+ j i))) ((<= n j))
        (vector-set! divs j (+ 1 (vector-ref divs j)))))
    (let loop ((i 1) (record 0) (hcns (list)))
      (if (<= n i) (reverse hcns)
        (if (< record (vector-ref divs i))
            (loop (+ i 1) (vector-ref divs i) (cons i hcns))
            (loop (+ i 1) record hcns))))))

(display (hcn 10000)) (newline)