(use math.prime) (let* ((n (read))) (let1 result (let loop ((n n) (primes *primes*)) (let1 prime (car primes) (cond ((= n 1) #f) ((< n (car primes)) #f) (else (let1 m (let loop ((n n)) (if (= (mod n prime) 0) (+ 1 (loop (div n prime))) 0)) (if (> m 1) #t (loop m (cdr primes)))))))) (print (if result "YES" "NO"))))