1.2

1.2.4

昨日の1.16まちがっとるがな…
1.19とか計算するだけでなんかおもろない

1.2.5

GCDの話.数学的なことだけでおしまい

1.2.6

確率的手法

グループ

SICPのグループを発見した.次から記事はそっちにかく

解答
;;; 1.16 again ;;;
(define (fast-expt-iter x n temp)
  (cond ((= n 0) temp)
	((even? n) (fast-expt-iter (* x x) (/ n 2) temp))
	(else (fast-expt-iter x (- n 1) (* temp x)))))
(define (fast-expt x n)
  (fast-expt-iter x n 1))
(fast-expt 2 10)

;;; 1.17 ;;;
(define (*2 a b)
  (cond ((= b 0) 0)
	((even? b) (double (*2 a (halve b))))
	(else (+ a (*2 a (- b 1))))))

;;; 1.18 ;;;
(define (*-iter a b temp)
  (cond ((= b 0) temp)
	((even? b) (*-iter (double a) (halve b) temp))
	(else (*-iter a (- b 1) (+ a temp )))))

(define (*3 a b)
  (cond ((= b 0) 0)
	(else (*-iter a b 0))))
;;; 1.19 ;;;
;p'= p^2 + q^2
;q'= 2pq + q^2

;;; 1.20 ;;;
(define (gcd a b)
  (if (= b 0)
      a
      (gcd b (remainder a b))))
;;; normal order
(gcd 206 40)
(gcd 40 (r 206 40))
;; b > 6, r = 1
(gcd (r 206 40)
     (r 40 (r 206 40)))
;; b > 4, r = 1 + 2 = 3
(gcd (r 40 (r 206 40))
     (r (r 206 40) (r 40 (r 206 40))))
;; b > 2, r = 3 + 4 = 7
(gcd (r (r 206 40) (r 40 (r 206 40)))
     (r (r 40 (r 206 40) (r (r 206 40) (r 40 (r 206 gcd))))))
;; b > 0, r = 7 + 7 = 14
(r (r 206 40) (r 40 (r 206 40)))
;; r = 14 + 4 = 18