(define (recur-cycle n) (define (div_2_5 x) (cond ((= (remainder x 2) 0) (div_2_5 (/ x 2))) ((= (remainder x 5) 0) (div_2_5 (/ x 5))) (else x))) (define (try-iter m r) (if (= r 1) m (try-iter (+ m 1) (remainder (* r 10) n)))) (if (= (div_2_5 n) n) (if (= n 1) 0 (try-iter 1 (remainder 10 n))) (recur-cycle (div_2_5 n)))) (define (longest upper) (define (try-iter n ans anscycle) (if (> n upper) ans (let ((m (recur-cycle n))) (if (> m anscycle) (try-iter (+ n 1) n m) (try-iter (+ n 1) ans anscycle))))) (try-iter 1 1 0)) (display (longest (read))) (newline)