SICP 問題 4.37
(define (a-pythagorean-triple-between low high) (let ((i (an-integer-between low high)) (hsq (* high high))) (let ((j (an-integer-between i high))) (let ((ksq (+ (* i i) (* j j)))) (require (>= hsq ksq)) (let ((k (sqrt ksq))) (require (integer? k)) (list i j k))))))
これは元の手続きよりも効率的になっている.
i,jについてはhigh以下の数について全数を探索するが,kはそれがないため探索数が減っている.