C, , , C4 , r < 0, x r y.
a, b r 1998 Vol. 2 (ISBN 0-201-89684-2), :
(define (factor n)
(let ((x (inexact->exact (floor (sqrt n)))))
(factor-inner (+ (* x 2) 1)
1
(- (* x x) n))))
(define (factor-inner a b r)
(cond ((= r 0) (/ (- a b) 2))
((< 0 r) (factor-inner a (+ b 2) (- r b)))
(else (factor-inner (+ a 2) (+ b 2) (- r (- a b))))))
EDIT : , , ,
r <- ((a - b) / 2)*((a + b - 2)/2) - N
0, , , r, a b. b b+2 r , r b, C4 . , .
r > 0, , b, C4. , , r < 0, . , a, a 2 r a, C3. a > b, r a C3 r , C4.
, a > b. a , b, - b , b = a - 2,
N = (a - (a - 2))/2 * ((a + (a - 2) - 2)/2 = 1 * (a - 2)
, N , , , sqrt(N) 1, .