diff options
author | Iru Cai <mytbk920423@gmail.com> | 2018-05-24 21:39:58 +0800 |
---|---|---|
committer | Iru Cai <mytbk920423@gmail.com> | 2018-05-24 21:39:58 +0800 |
commit | 1eefd58ca4fdb5d2f51f657bfd70c9a89a4707db (patch) | |
tree | abde0e4da3c7fe138f3874a94d8eb7d0e44c3224 /euler26.scm | |
download | project_euler-1eefd58ca4fdb5d2f51f657bfd70c9a89a4707db.tar.xz |
initial commit
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) |