Advertisement
Guest User

Untitled

a guest
Mar 27th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 0.77 KB | None | 0 0
  1.  
  2. (define (divisors n)
  3.   (define upper-bound (isqrt n))
  4.   (let loop ([counter 0]
  5.              [divisor 1])
  6.     (cond
  7.      [(fx>? divisor upper-bound)
  8.       (if (fx=? n (fx* upper-bound upper-bound))
  9.              (fx- counter 1)
  10.              counter)]
  11.      [(fxzero? (fxremainder n divisor)) (loop (fx+ counter 2) (fx+ divisor 1))]
  12.      [else (loop counter (fx+ divisor 1))])))
  13.  
  14. (define (divides-times n divisor times)
  15.   (let loop ([n n] [divisor divisor] [times times])
  16.     (let ([i (/ n divisor)])
  17.       (cond
  18.        [(integer? i) (divides-times i divisor (+ times 1))]
  19.        [else
  20.         times]))))
  21.      
  22. (define (euler12)
  23.   (let loop ([num 1]
  24.              [sum 1])
  25.     (cond
  26.      [(fx>? (divisors sum) 500) sum]
  27.      [else (loop (fx+ num 1) (fx+ num sum 1))])))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement