; highly composite numbers
(define (zip . xss) (apply map list xss))
(define (nod x)
(let loop ((n 2) (z 2))
(if (= z x) n
(if (zero? (modulo x z))
(loop (+ n 1) (+ z 1))
(loop n (+ z 1))))))
(define (hcp limit)
(let loop ((x 2) (y (list 1)) (z (list 1)))
(if (< limit x) (reverse (zip y z))
(let ((n (nod x)))
(if (< (car z) n)
(loop (+ x 1) (cons x y) (cons n z))
(loop (+ x 1) y z))))))
(display (hcp 1000)) (newline)
OyBoaWdobHkgY29tcG9zaXRlIG51bWJlcnMKCihkZWZpbmUgKHppcCAuIHhzcykgKGFwcGx5IG1hcCBsaXN0IHhzcykpCgooZGVmaW5lIChub2QgeCkKICAobGV0IGxvb3AgKChuIDIpICh6IDIpKQogICAgKGlmICg9IHogeCkgbgogICAgICAoaWYgKHplcm8/IChtb2R1bG8geCB6KSkKICAgICAgICAgIChsb29wICgrIG4gMSkgKCsgeiAxKSkKICAgICAgICAgIChsb29wIG4gKCsgeiAxKSkpKSkpCgooZGVmaW5lIChoY3AgbGltaXQpCiAgKGxldCBsb29wICgoeCAyKSAoeSAobGlzdCAxKSkgKHogKGxpc3QgMSkpKQogICAgKGlmICg8IGxpbWl0IHgpIChyZXZlcnNlICh6aXAgeSB6KSkKICAgICAgKGxldCAoKG4gKG5vZCB4KSkpCiAgICAgICAgKGlmICg8IChjYXIgeikgbikKICAgICAgICAgICAgKGxvb3AgKCsgeCAxKSAoY29ucyB4IHkpIChjb25zIG4geikpCiAgICAgICAgICAgIChsb29wICgrIHggMSkgeSB6KSkpKSkpCgooZGlzcGxheSAoaGNwIDEwMDApKSAobmV3bGluZSk=