diff options
Diffstat (limited to 'euler26.scm')
-rw-r--r-- | euler26.scm | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/euler26.scm b/euler26.scm new file mode 100644 index 0000000..6c01409 --- /dev/null +++ b/euler26.scm @@ -0,0 +1,30 @@ +(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) |