(use math.prime) (let* ((n (read))) (when (small-prime? n) (print "NO") (exit 0)) (let1 m (let loop ((primes *primes*) (m n) (num 0)) (let1 prime #?=(car primes) (cond ((< m prime) num) ((< 2 num) num) (else (if (= (mod m prime) 0) (loop primes (div m prime) (+ num 1)) (loop (cdr primes) m num)))))) (print (if (> m 2) "YES" "NO"))))