Code Review

Compare your solutions

    Ответы:
для 199 — 199 (простое число)
для 1999 — 1999 (простое число)
для 19999 — 7

Порядок вычислений:
(smallest-divisor 199)
; # call 1
; (find-divisor 199 2)
; 
; (cond ((> (square test-divisor) n) n)
;       ((divides? test-divisor n) test-divisor)
;       (else (find-divisor n (+ test-divisor 1))))
;
; (cond ((> (square 2) 199) 199)
;       ((divides? 2 199) 2)
;       (else (find-divisor 199 (+ 2 1))))
;
; (cond ((> 4 199) 199)                        #f
;       ((= (remainder 199 2) 0) 2)
;       (else (find-divisor 199 (+ 2 1))))

; (cond ((> 4 199) 199)                        #f
;       ((= 1 0) 2)                            #f
;       (else (find-divisor 199 (+ 2 1))))

; # call 2
; (find-divisor 199 (+ 2 1))
; 
; (cond ((> (square (+ 2 1)) 199) 199)
;       ((divides? (+ 2 1) 199) (+ 2 1))
;       (else (find-divisor 199 (+ (+ 2 1) 1))))
; 
; (cond ((> 9 199) 199)                       #f
;       ((= (remainder 199 3) 0) 3)
;       (else (find-divisor 199 (+ (+ 2 1) 1))))
; 
; (cond ((> 9 199) 199)                       #f
;       ((= 1 0) 3)                           #f
;       (else (find-divisor 199 (+ (+ 2 1) 1))))

; # call 3

; (find-divisor 199 (+ (+ 2 1) 1))
; 
; (cond ((> (square (+ (+ 2 1) 1)) 199) 199)
;       ((divides? (+ (+ 2 1) 1) 199) (+ (+ 2 1) 1))
;       (else (find-divisor 199 (+ (+ (+ 2 1) 1) 1))))
; 
; (cond ((> 16 199) 199)                      #f
;       ((= (remainder 199 4) 4)              #f
;       (else (find-divisor 199 (+ (+ (+ 2 1) 1) 1))))
;
;
и т.д.