青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

CG@CPPBLOG

/*=========================================*/
隨筆 - 76, 文章 - 39, 評論 - 137, 引用 - 0
數據加載中……

我的SICP習題答案(2.01~2.08)


2.01

(define (make-rat x y)
  (let ((g (gcd x y)))
    (if (< y 
0)
        (cons (/ (- x) g) (/ (- y) g))
        (cons (/ x g) (/ y g))))) 

2.02

(define (make-point x y) (cons x y))
(define (x-point p) (car p))
(define (y-point p) (cdr p))

(define (make-segment p1 p2) (cons p1 p2))
(define (start-seg line) (car line))
(define (end-seg line) (cdr line))

(define (midpoint-segment line)
  (make-point (/ (+ (x-point (start-seg line)) (x-point (end-seg line))) 
2.0)
              (/ (+ (y-point (start-seg line)) (y-point (end-seg line))) 
2.0))) 

2.04

;;;;;;;;;;;;;;;;;;;;;;;;;
;
 (cdr+ (cons+ x y) = ((cons+ x y) (lambda(p q) p)))
;
            = (lambda(m)(m x y) (lambda(p q) p)))
;
            = ((lambda(p q) p) x y)
;
            = x
(define (cons+ x y)
  (lambda(m) (m x y)))
(define (car+ z)
  (z (lambda(p q) p)))
(define (cdr+ z)
  (z (lambda(p q) q))) 

2.05

  2^a * 3^b = 2^c * 3^d (a!=c && b!=d)
  
2^a/2^c = 3^d/3^b
  
2^(a-c) = 3^(d-b)
  a
=c && d=b

2.06

(define one (lambda(f) (lambda(x) (f x))))
(define two (lambda(f) (lambda(x) (f (f x))))) 

2.07

(define (upper-bound pair)
  (if (> (car pair) (cdr pair))
      (car pair)
      (cdr pair)))
(define (lower-bound pair)
  (if (> (car pair) (cdr pair))
      (cdr pair)
      (car pair))) 

2.08

(define (sub-interval x y)
  (add-interval x (make-interval (- (upper-bound y))
                                 (- (lower-bound y))))) 

posted @ 2008-06-10 22:01 cuigang 閱讀(719) | 評論 (0)編輯 收藏

我的SICP習題答案(1.40~1.44)

;;;;;;;;;;;
;
1.43
(define (double f)
  (lambda(x) (f (f x))))
;;(((double (double double)) inc) 5) = 5+16 =21

;;;;;;;;;;;;;
;
1.42
(define (compose f g)
  (lambda(x) (f (g x))))

;;;;;;;;;;;;;;;
;
1.43
(define (repeated f n)
  (if(
= n 1) f
     (compose f (repeated f (- n 
1)))))

;;;;;;;;;;;;;;;;
;
1.44
(define (smooth f)
  (lambda(x) (/ (+ (f (- x dx))
                   (f x)
                   (f (+ x dx)))
                
3)))
(define (smooth-n f)
  (repeated f n))
(define (smooth-n f n)
  ((repeated smooth n) f))


posted @ 2008-04-19 23:49 cuigang 閱讀(962) | 評論 (6)編輯 收藏

我的SICP習題答案(1.35~1.39)

1.35

若 φ=0 , 則 φ^2=φ+1 不成立 , 故 φ≠0
φ^2 = φ+1 ==>
φ = (φ+1)/φ = 1 + (1/φ)

(fixed-point (lambda(x) (+ 1 (/ 1 x))) 1.0)

1.36

(define tolerance 0.00001)

(define (fixed-point f first-guess)
  (define (close-enough? x y)
    (< (abs (- x y)) tolerance))
  (define (try guess)
    (let ((next (f guess)))
      (display next)
      (newline)
      (if (close-enough? guess next)
          next
          (try next))))
  (try first-guess))

平均阻尼法和不用平均阻尼分別如下,它們步數分別為 9 和 34 。

(fixed-point (lambda(x) (/ (+ x (/ (log 1000) (log x))) 2)) 2.0)
(fixed-point (lambda(x) (/ (log 
1000) (log x))) 2.0)

1.37

(define (cont-frac-r n d k)
  (define (redu i)
    (if (
= i k)
        (/ (n i) (d i))
        (/ (n i) (+ (d i) (redu n d (+ i 
1))))))
  (redu 
1))

(define (cont-frac n d k)
  (define (iter i result)
    (if (
= i 0
        result
        (iter (- i 
1) (/ (n i) (+ (d i) result)))))
  (iter k 
0))

(define (get-phai k)
  (/ 
1 (cont-frac (lambda(i) 1.0) (lambda(i) 1.0) k)))

(define (get-k)
  (define (iter i)
    (if (< (abs (- (get-phai i) 
1.6180)) 0.00005)
        i
        (iter (+ i 
1))))
  (iter 
1))

k = 11 時,精度滿足 4 位 十進制數。

1.38

(define (euler-d i)
  (cond ((
= i 22.0)
        ((and (> i 
2) (= 0 (remainder (- i 23)))
         (* (/ (+ i 
13.02.0))
        (else 
1.0)))

(define (get-e k)
  (+ 
2 (cont-frac (lambda(i) 1.0) euler-d k)))

1.39

(define (tan-cf x k)
  (define (tan-n i)
    (if (
= 1 i)
        x
        (- (* x x))))
  (cont-frac tan-n (lambda(i) (- (* i 
2.01.0)) k))

posted @ 2008-04-16 00:22 cuigang 閱讀(839) | 評論 (1)編輯 收藏

數組類型、函數類型到左值和右值的轉換

     摘要: 1、左值和右值

表達式的左值是它的地址,右值是該地址所存儲的內容。比如下面代碼:

x = x + 1;

這兩個 x 有什么不同呢?  閱讀全文

posted @ 2008-04-07 22:50 cuigang 閱讀(4532) | 評論 (28)編輯 收藏

我的SICP習題答案(1.34)

這個展開過程為:

(f f)
(f 2)
(2 2)

解釋器將報錯,‘2’是一個未定義過程。

posted @ 2008-04-06 16:46 cuigang 閱讀(841) | 評論 (0)編輯 收藏

我的SICP習題答案(1.29~1.33)

1.29

(define (simpson f a b n)
  (define (get-h) (/ (- b a) n))
  (define (get-y k) (f (+ a (* k (get-h)))))
  (define (simpson-term k)
    (cond ((
= k 0) (get-y k))
          ((
= k n) (get-y k))
          ((
= (remainder k 20) (* 2.0 (get-y k)))
          (else (* 
4.0 (get-y k)))))
  (define (simpson-next k) (+ k 
1))
  (* (/ (get-h) 
3.0) (sum simpson-term 0 simpson-next n))) 

1.30

(define (sum term a next b)
  (define (iter a result)
    (if (> a b)
        result
        (iter (next a) (+ (term a) result))))
  (iter a 
0))

1.31

;;遞歸
(define (product-re term a next b)
  (if (> a b)
      
1
      (* (term a)
         (product-re term (next a) next b))))
;;迭代
(define (product term a next b)
  (define (iter a result)
    (if (> a b)
        result
        (iter (next a) (* result (term a)))))
  (iter a 
1))

(define (pi-product b)
  (define (pi-term k) (/ (* (- k 
1) (+ k 1)) k k))
  (define (pi-next k) (+ k 
2))
  
;;(* 4.0 (product-re pi-term 3.0 pi-next b))) ;;遞歸
  (* 4.0 (product pi-term 3.0 pi-next b)))      ;;迭代


1.32

(define (sum term a next b)
  (accumulate + 
0 term a next b))

(define (product term a next b)
  (accumulate * 
1 term a next b))

;;遞歸
(define (accumulate-re combiner null-value term a next b)
  (if (> a b)
      null-value
      (combiner (term a)
                (accumulate-re combiner null-value term (next a) next b))))

;;迭代
(define (accumulate combiner null-value term a next b)
  (define (iter a result)
    (if (> a b)
        result
        (iter (next a) (combiner (term a) result))))
  (iter a null-value))

1.33

(define (filtered-accumulate combiner null-value term a next b filter?)
  (define (iter a result)
    (if (> a b)
        result
        (if (filter? (term a))
            (iter (next a) (combiner (term a) result))
            (iter (next a) result))))
  (iter a null-value))

(define (sum-prime a b)
  (define (sum-prime-term k) k)
  (define (sum-prime-next k) (+ k 
1))
  (filtered-accumulate + 
0 sum-prime-term a sum-prime-next b prime?))

(define (relatively-prime-product n)
  (define (relatively-prime? k) (
= (gcd k n) 1))
  (define (term k) k)
  (define (next k) (+ k 
1))
  (filtered-accumulate * 
1 term 2 next (- n 1) relatively-prime?))



posted @ 2008-04-06 16:12 cuigang 閱讀(967) | 評論 (0)編輯 收藏

對數組名取地址是什么?

     摘要: 這兩天有人問以下有什么代碼有什么不同?

1 int array[100];
2
3 memset(array, 0, sizeof(array));
4 memset(&array, 0, sizeof(array));  閱讀全文

posted @ 2008-04-04 20:06 cuigang 閱讀(10436) | 評論 (21)編輯 收藏

我的SICP習題答案(1.24~1.28)

1.24
對于Fermat檢查,因為具有log n 的增長階,所以對于 n^2 和 n 的檢查的時間比 理論上應該是 2:1, 實際上,經過測試也比較接近,當n比較大時。
若與預計不符,可能因為 n 比較小,或者字長發生變化,比如 n > 2^32 (參見下題)

1.25
僅從理論分析,Alyssa 的改動不會引起增長階的變化,但實際上當 Fermat 檢查的 n 稍微大一點,速度就會很慢。主要原因 就是 base^exp 是一個非常大的數,可能遠遠超過 一個32位機字的表示范圍 2^32 ,在 scheme 里可能用若干個 32-bit 靠軟件實現運算,這將導致計算急速增長。無論是傳遞、運算還是求模。
實際上 1.22、1.23、1.24 的幾個題目可能都會遇到字長變化引起的計算速度突變。

1.26
Fermat 檢查正是因為 連續求平方的求冪方法,使得的增長階變為 log n, 而這均來源于 b^(2n) = (b^n)^2,
Louis 的方法讓求冪又變成了連乘,b^(2n) = b^n*b^n = (b*b*...*b)*(b*b*...*b),求冪的增長階變成了 O(n),Fermat 檢查的增長階自然也變成了 O(n)。

1.27
(define (fermat-test n)
  (fermat-iter (- n 
1) n))

(define (fermat-iter a n)
  (cond ((
= a 0) #t)
        ((
= (expmod a n n) a) (fermat-iter (- a 1) n))
        (else #f)))

1.28
首先來看,Fermat 小定理的一個變形:

p 是素數, 1<a<p, 有 a^p % p = a
==> a^p = kp + a ==> a^p - a = kp ==> a(a^(p-1)-1) = kp ==> a^(p-1) -1 = k'p
==> a^(p-1) % p = 1

這個變形就是題目中提到的,這個形式和費馬小定理是等價的(但是奇怪的是,我沒有發現已知的幾個Carmichael數能夠躲過這個變形的檢查,有待研究

再來看,miller-rabin 素性測試的原理:

p 是素數, 1<a<p, 且 a^2 % p = 1
==> (a^2-1) % p = 0 ==> (a+1)(a-1) % p =0
那么 a+1 % p = 0 或者 a-1 % p =0,
又 a<p 且 p 是素數,所以
a = 1 或者 a = p-1 (這兩個叫做 1模n的平凡平方根)

代碼如下:
(define (check-nontrivial-sqrt-of-one a n)
  (define (check-
1? t)
    (if (and (> a 1
)
             (< a (- n 
1))
             (
= t 1))
        
0 t))
  (check-
1? (remainder (square a) n)))

(define (expmod base exp m)
  (cond ((
= exp 01)
        ((even? exp)
         
;(remainder (square (expmod base (/ exp 2) m)) m))
         (check-nontrivial-sqrt-of-one (expmod base (/ exp 2) m) m))
        (else
         (remainder (* base (expmod base (- exp 
1) m)) m))))

(define (miller-rabin-test n)
  (define (iter x n)
    (cond ((
= x 0) #t)
          ((
= (expmod x (- n 1) n) 1) (iter (- x 1) n))
          (else #f)))
  (iter (- n 
1) n))

① 對于
Carmichael 數 n ,實際上不能完全通過 a^(n-1)%n = 1 的檢查,除非 a 與 n 互素,當 a 為 n 的素因子時,不能通過,比如 Carmichael 第一個 561 = 3*11*17, 而 3^560%561 = 375 ≠ 1 。可以程序驗證這個。 所以我認為,a^(n-1)%n = 1 的檢查比 a^n%n = a 的檢查更嚴格,是不是不存在合數通過完全的 a^(n-1)%n = 1 的檢查呢?我不敢說。但把這個結論暫時記在這里,希望能得到幫助或者反駁。2008-04-02 23:56


posted @ 2008-03-31 00:21 cuigang 閱讀(1580) | 評論 (2)編輯 收藏

謹記于此

我們的世界是模糊的、連續的、不精確的,但軟件是精確、離散的、形式化的,這就注定了軟件不能完全描述現實世界。因此我們需要知道描述哪些部分,忽略哪些部分,這就是軟件的本質問題。
--- Tom Demarco

任何一個正在構建大型系統的人,天天面對的中心議題就是:如何剔除不必要的、人為的、自找的復雜部分,并控制好剩下的,無可逃避的復雜性。
--- Betrand Meyer


posted @ 2008-03-30 00:23 cuigang 閱讀(1657) | 評論 (5)編輯 收藏

我的SICP習題答案(1.21~1.23)

1.21

> (smallest-divisor 199)
199
> (smallest-divisor 
1999)
1999
> (smallest-divisor 
19999)
7
>

1.22
在 DrScheme 中沒有對應的 runtime 過程,我們用內建的 current-milliseconds 來代替,這個過程返回的是系統的 ms 數。
同時,在 Windows 下無法精確表示 16ms 以下的精度(可能時間片的大小是 16ms ),所以這里用比較大的數來測試。
代碼如下

(define (even? x) (= (remainder x 20))

(define (runtime) (current-milliseconds))

(define (start-prime-test n start-time)
  (and (prime? n)
       (report-prime (- (runtime) start-time))))

(define (report-prime elapsed-time)
  (display 
" *** ")
  (display elapsed-time))

(define (search-iter cur-num index start-time)
  (newline)
  (display cur-num)
  (if (not (
= index 0))
      (if (start-prime-test cur-num start-time)
          (search-iter (+ cur-num 
2) (- index 1) start-time)
          (search-iter (+ cur-num 
2) index start-time))))

(define (search-for-primes start-number)
  (if (even? start-number)
      (search-iter (+ start-number 
13 (runtime))
      (search-iter start-number 
3 (runtime))))

這里用到了 prime? 謂詞,代碼不再復述。
                            
|------+--------+--------+-------|
|10^9  | 10^10  | 10^11  | 10^12 | => start-number
|------+--------+--------+-------|
|31    | 250    | 609    | 1953  | (ms)
|47    | 406    | 1203   | 3844  |
|78    | 625    | 1859   | 5719  |
|------+--------+--------+-------|

從上表可以看出,除了前兩列之間,后列的數字都是前列數字的 3 倍左右,近似于 √10 ≈ 3.16。實際上,隨著 n 的不斷增大,這個數會逐漸逼近 √10。

1.23

(define (next n)
  (if (
= n 23 (+ n 2)))

(define (find-divisor n test-divisor)
  (cond ((> (square test-divisor) n) n)
        ((divides? test-divisor n) test-divisor)
        (else (find-divisor n (next test-divisor)))))

計算結果如下:
|--------+--------+-------|
| 10^10  | 10^11  | 10^12 | => start-number
|--------+--------+-------|
| 141    | 297    | 1078  | (ms)
| 219    | 609    | 2093  |
| 313    | 984    | 3140  |
|--------+--------+-------|

可以看出這個比值大約在 1.8(1/0.55) 左右,可能原因是其它的計算需要時間,但當 n 不斷增大,其它計算是常數階,這個比值會不斷接近2。


posted @ 2008-03-28 23:44 cuigang 閱讀(810) | 評論 (2)編輯 收藏

僅列出標題
共8頁: 1 2 3 4 5 6 7 8 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲美女视频在线观看| 午夜欧美理论片| 欧美日韩中文字幕在线视频| 久久亚洲精品伦理| 免费在线成人av| 久久综合色8888| 欧美成人亚洲成人| 欧美女同在线视频| 国产精品综合| 伊人婷婷久久| 日韩亚洲在线观看| 欧美在线观看一区二区| 久久亚洲色图| 亚洲精品美女在线| 亚洲国产三级| 亚洲欧美视频| 欧美久久影院| 国产色视频一区| 亚洲精品欧洲| 欧美专区一区二区三区| 老鸭窝91久久精品色噜噜导演| 欧美婷婷久久| 国产精品亚洲综合| 久久国产精品久久久久久电车| 久久av一区二区三区漫画| 久久精品免费看| 欧美在线不卡| 欧美刺激午夜性久久久久久久| 欧美激情在线观看| 亚洲欧美日韩国产成人| 欧美77777| 国产亚洲精品激情久久| 夜久久久久久| 亚洲清纯自拍| 欧美在线影院| av成人免费在线| 久久精品道一区二区三区| 欧美日韩中文字幕| 91久久综合| 久久人人爽人人爽| 亚洲性感激情| 欧美日韩视频专区在线播放| 欧美激情精品久久久久久变态| 国产精品欧美日韩一区| 99精品视频免费观看视频| 欧美在线你懂的| 99re热这里只有精品视频| 久久一区二区三区四区| 国产日韩欧美不卡在线| 日韩午夜在线电影| 美女露胸一区二区三区| 亚洲欧美日韩天堂一区二区| 欧美日韩国产bt| 一区免费在线| 久久免费高清视频| 欧美亚洲一区| 国产热re99久久6国产精品| 亚洲精品老司机| 久久偷窥视频| 久久国产精品亚洲va麻豆| 国产精品视频免费观看| 中日韩高清电影网| 亚洲理论电影网| 欧美国产高潮xxxx1819| 最新国产拍偷乱拍精品| 亚洲国产精品一区二区www在线| 欧美在线一区二区三区| 国产一区二区三区四区在线观看| 久久精品五月| 久久久青草婷婷精品综合日韩 | 蜜臀99久久精品久久久久久软件 | 国产精品视频你懂的| 亚洲一二区在线| 亚洲一级高清| 国产一区二区久久久| 久久综合九色综合网站| 蜜桃av综合| 亚洲亚洲精品三区日韩精品在线视频| av成人免费| 国产亚洲午夜高清国产拍精品| 久久精品国产清高在天天线| 亚洲精品视频一区| 亚洲精品一区二区三区福利| 欧美成人亚洲成人| 亚洲精品一区二区三区婷婷月| 亚洲国产视频一区| 国产精品久久一级| 美国成人直播| 欧美日韩国产经典色站一区二区三区| 校园激情久久| 欧美国产精品人人做人人爱| 亚洲欧美另类在线| 久久亚洲精品视频| 亚洲午夜一区| 久久九九精品| 亚洲小视频在线观看| 久久国产精品免费一区| 亚洲国产欧美在线人成| 一区二区三区免费在线观看| 国语对白精品一区二区| 亚洲理论在线| 亚洲激情图片小说视频| 亚洲视频久久| 亚洲人成绝费网站色www| 亚洲制服少妇| 亚洲精品一区二区三| 欧美中文字幕| 亚洲欧美在线视频观看| 欧美大色视频| 美女精品网站| 国产自产精品| 午夜欧美精品久久久久久久| 一本久道久久综合狠狠爱| 久久久久久亚洲综合影院红桃| 亚洲欧美一区在线| 欧美日韩国产一区| 欧美承认网站| 在线欧美日韩| 欧美一区二区三区视频在线观看 | 国产精品va在线播放我和闺蜜| 麻豆成人在线播放| 国产日韩欧美在线视频观看| 91久久中文| 亚洲高清视频在线| 欧美在线首页| 午夜精品区一区二区三| 欧美日韩国产高清视频| 91久久国产精品91久久性色| 在线观看亚洲一区| 久久久久久久久久码影片| 久久九九全国免费精品观看| 国产乱码精品一区二区三区忘忧草| 99精品福利视频| 亚洲一区二区在线免费观看| 欧美激情一区二区三区四区| 嫩模写真一区二区三区三州| 国产婷婷97碰碰久久人人蜜臀| 亚洲欧美99| 久久精品国产亚洲精品| 国产精品一区二区三区四区 | 日韩亚洲欧美成人| 欧美大片一区二区| 亚洲精品资源美女情侣酒店| 国内自拍一区| 亚洲国产日韩在线| 欧美性做爰毛片| 日韩视频免费观看高清在线视频 | 国产精品黄视频| 亚洲免费观看高清在线观看 | 好看的日韩视频| 欧美一区二区视频网站| 欧美一区二区三区视频| 国产日韩久久| 裸体女人亚洲精品一区| 91久久久亚洲精品| 亚洲欧美国产视频| 国产欧美一区二区精品忘忧草| 欧美亚洲一区二区在线| 免费在线观看精品| 亚洲美女视频在线观看| 欧美手机在线视频| 亚洲欧美日韩另类精品一区二区三区| 久久久夜精品| 一区二区三区免费看| 国产精品毛片在线看| 久久不射网站| 亚洲精品视频免费| 久久久久久久久久久久久9999| 悠悠资源网久久精品| 欧美日韩国产片| 久久精品国产99国产精品| 亚洲第一福利社区| 亚洲欧美在线免费| 亚洲国产日韩欧美| 国产精品免费网站| 久久亚洲精品视频| 一区二区三区视频在线播放| 久久免费视频在线观看| 一区二区动漫| 影音先锋在线一区| 欧美私人网站| 欧美阿v一级看视频| 亚洲欧美国产三级| 欧美激情91| 久久久噜噜噜| 亚洲欧美日韩中文视频| 亚洲日本欧美| 一区二区三区在线看| 国产精品xxx在线观看www| 久久综合久久综合这里只有精品| 亚洲美女色禁图| 麻豆国产精品777777在线| 欧美中文在线视频| 亚洲视频欧美视频| 亚洲欧洲精品天堂一级| 国产在线不卡精品| 国产农村妇女精品一区二区| 欧美日韩视频在线观看一区二区三区| 欧美a级一区| 毛片av中文字幕一区二区|