(use math.prime) (define (read-number) (string->number (read-line))) (let* ((n (read-number))) (define primes (naive-factorize n)) (define assoc '()) (let loop ((primes primes)) (unless (null? primes) (let1 prime (car primes) (set! assoc (assoc-set! assoc prime (+ 1 (assoc-ref assoc prime 0))))) (loop (cdr primes)))) (if (= (length assoc) 1) (print "Alice") (let1 num (length (filter (lambda (x) (= (cdr x) 1)) assoc)) (if (= (mod (+ num (* 2 (- (length assoc) num))) 2) 0) (print "Bob") (print "Alice")))))