codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
; two more random exercises (define (ilog b n) (let loop1 ((lo 0) (b^lo 1) (hi 1) (b^hi b)) (if (< b^hi n) (loop1 hi b^hi (* hi 2) (* b^hi b^hi)) (let loop2 ((lo lo) (b^lo b^lo) (hi hi) (b^hi b^hi)) (if (<= (- hi lo) 1) (if (= b^hi n) hi lo) (let* ((mid (quotient (+ lo hi) 2)) (b^mid (* b^lo (expt b (- mid lo))))) (cond ((< n b^mid) (loop2 lo b^lo mid b^mid)) ((< b^mid n) (loop2 mid b^mid hi b^hi)) (else mid)))))))) (define (middle-square n) (let* ((len (+ (ilog 10 n) 1)) (len2 (quotient len 2))) (modulo (quotient (* n n) (expt 10 len2)) (expt 10 len)))) (let loop ((n 675248) (k 25)) (when (positive? k) (display n) (newline) (loop (middle-square n) (- k 1)))) (define (randu n) (modulo (* 65539 n) (expt 2 31))) (let loop ((n 1) (k 25)) (when (positive? k) (display n) (newline) (loop (randu n) (- k 1))))
Private
[
?
]
Run code
Submit