﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-(define (cuigang) (coding))</title><link>http://www.cppblog.com/cuigang/</link><description>(define (coding) (coding))
</description><language>zh-cn</language><lastBuildDate>Sat, 17 May 2008 17:24:22 GMT</lastBuildDate><pubDate>Sat, 17 May 2008 17:24:22 GMT</pubDate><ttl>60</ttl><item><title> 我的SICP习题答案（1.40~1.44）</title><link>http://www.cppblog.com/cuigang/archive/2008/04/19/47632.html</link><dc:creator>cuigang</dc:creator><author>cuigang</author><pubDate>Sat, 19 Apr 2008 15:49:00 GMT</pubDate><guid>http://www.cppblog.com/cuigang/archive/2008/04/19/47632.html</guid><wfw:comment>http://www.cppblog.com/cuigang/comments/47632.html</wfw:comment><comments>http://www.cppblog.com/cuigang/archive/2008/04/19/47632.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/cuigang/comments/commentRss/47632.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cuigang/services/trackbacks/47632.html</trackback:ping><description><![CDATA[<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%; font-family: courier new;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008000;">;</span><span style="color: #008000;">;;;;;;;;;;</span><span style="color: #008000;"><br>;</span><span style="color: #008000;">1.43</span><span style="color: #008000;"><br></span><span style="color: #000000;">(define&nbsp;(double&nbsp;f)<br>&nbsp;&nbsp;(lambda(x)&nbsp;(f&nbsp;(f&nbsp;x))))<br></span><span style="color: #008000;">;</span><span style="color: #008000;">;(((double&nbsp;(double&nbsp;double))&nbsp;inc)&nbsp;5)&nbsp;=&nbsp;5+16&nbsp;=21</span><span style="color: #008000;"><br></span><span style="color: #000000;"><br></span><span style="color: #008000;">;</span><span style="color: #008000;">;;;;;;;;;;;;</span><span style="color: #008000;"><br>;</span><span style="color: #008000;">1.42</span><span style="color: #008000;"><br></span><span style="color: #000000;">(define&nbsp;(compose&nbsp;f&nbsp;g)<br>&nbsp;&nbsp;(lambda(x)&nbsp;(f&nbsp;(g&nbsp;x))))<br><br></span><span style="color: #008000;">;</span><span style="color: #008000;">;;;;;;;;;;;;;;</span><span style="color: #008000;"><br>;</span><span style="color: #008000;">1.43</span><span style="color: #008000;"><br></span><span style="color: #000000;">(define&nbsp;(repeated&nbsp;f&nbsp;n)<br>&nbsp;&nbsp;(if(</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;n&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">)&nbsp;f<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(compose&nbsp;f&nbsp;(repeated&nbsp;f&nbsp;(-&nbsp;n&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">)))))<br><br></span><span style="color: #008000;">;</span><span style="color: #008000;">;;;;;;;;;;;;;;;</span><span style="color: #008000;"><br>;</span><span style="color: #008000;">1.44</span><span style="color: #008000;"><br></span><span style="color: #000000;">(define&nbsp;(smooth&nbsp;f)<br>&nbsp;&nbsp;(lambda(x)&nbsp;(/&nbsp;(+&nbsp;(f&nbsp;(-&nbsp;x&nbsp;dx))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(f&nbsp;x)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(f&nbsp;(+&nbsp;x&nbsp;dx)))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">)))<br>(define&nbsp;(smooth-n&nbsp;f)<br>&nbsp;&nbsp;(repeated&nbsp;f&nbsp;n))<br><br><br></span></div>
<br style="font-family: courier new;"><img src ="http://www.cppblog.com/cuigang/aggbug/47632.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cuigang/" target="_blank">cuigang</a> 2008-04-19 23:49 <a href="http://www.cppblog.com/cuigang/archive/2008/04/19/47632.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的SICP习题答案（1.35~1.39）</title><link>http://www.cppblog.com/cuigang/archive/2008/04/16/47169.html</link><dc:creator>cuigang</dc:creator><author>cuigang</author><pubDate>Tue, 15 Apr 2008 16:22:00 GMT</pubDate><guid>http://www.cppblog.com/cuigang/archive/2008/04/16/47169.html</guid><wfw:comment>http://www.cppblog.com/cuigang/comments/47169.html</wfw:comment><comments>http://www.cppblog.com/cuigang/archive/2008/04/16/47169.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cuigang/comments/commentRss/47169.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cuigang/services/trackbacks/47169.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt; font-family: courier new;"><span style="font-size: 8pt;"><span style="font-weight: bold; font-size: 10pt;">1.35</span><br><br><span style="font-family: courier new; font-size: 10pt;">若 </span></span><span style="font-size: 8pt; font-family: courier new;">&#966;=0，则&#966;^2=&#966;+1不成立，故&#966;&#8800;0</span><br style="font-family: courier new;"><span style="font-size: 8pt; font-family: courier new;">&#966;^2=&#966;+1 ==&gt; &#966;=(&#966;+1)/&#966;=1+(1/</span><span style="font-size: 10pt;"><span style="font-family: courier new;">&#966;)</span><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000; font-size: 8pt; font-family: courier new;">(fixed-point&nbsp;(lambda(x)&nbsp;(+&nbsp;</span><span style="color: #000000; font-family: courier new;">1&nbsp;(/&nbsp;1&nbsp;x)))&nbsp;1.0</span><span style="color: #000000;"><span style="font-family: courier new;">)</span><br></span></div>
<br><span style="font-weight: bold; font-size: 10pt;">1.36</span><br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%; font-family: courier new;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000; font-size: 10pt;">(define&nbsp;tolerance&nbsp;</span><span style="color: #000000;">0.00001</span><span style="color: #000000; font-size: 10pt;">)<br><br>(define&nbsp;(fixed-point&nbsp;f&nbsp;first-guess)<br>&nbsp;&nbsp;(define&nbsp;(close-enough?&nbsp;x&nbsp;y)<br>&nbsp;&nbsp;&nbsp;&nbsp;(&lt;&nbsp;(abs&nbsp;(-&nbsp;x&nbsp;y))&nbsp;tolerance))<br>&nbsp;&nbsp;(define&nbsp;(try&nbsp;guess)<br>&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;((next&nbsp;(f&nbsp;guess)))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(display&nbsp;next)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(newline)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;(close-enough?&nbsp;guess&nbsp;next)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(try&nbsp;next))))<br>&nbsp;&nbsp;(try&nbsp;first-guess))</span></div>
<br>平均阻尼法和不用平均阻尼分别如下，它们步数分别为 9 和 34 。<br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%; font-family: courier new;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000; font-size: 10pt;">(fixed-point&nbsp;(lambda(x)&nbsp;(/&nbsp;(+&nbsp;x&nbsp;(/&nbsp;(log&nbsp;</span><span style="color: #000000;">1000</span><span style="color: #000000;">)&nbsp;(log&nbsp;x)))&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">))&nbsp;</span><span style="color: #000000;">2.0</span><span style="color: #000000;">)<br>(fixed-point&nbsp;(lambda(x)&nbsp;(/&nbsp;(log&nbsp;</span><span style="color: #000000;">1000</span><span style="color: #000000;">)&nbsp;(log&nbsp;x)))&nbsp;</span><span style="color: #000000;">2.0</span><span style="color: #000000;">)</span></div>
<br><span style="font-weight: bold;">1.37</span><br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">(define&nbsp;(cont-frac-r&nbsp;n&nbsp;d&nbsp;k)<br>&nbsp;&nbsp;(define&nbsp;(redu&nbsp;i)<br>&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;(</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;i&nbsp;k)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(/&nbsp;(n&nbsp;i)&nbsp;(d&nbsp;i))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(/&nbsp;(n&nbsp;i)&nbsp;(+&nbsp;(d&nbsp;i)&nbsp;(redu&nbsp;n&nbsp;d&nbsp;(+&nbsp;i&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">))))))<br>&nbsp;&nbsp;(redu&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">))<br><br>(define&nbsp;(cont-frac&nbsp;n&nbsp;d&nbsp;k)<br>&nbsp;&nbsp;(define&nbsp;(iter&nbsp;i&nbsp;result)<br>&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;(</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(iter&nbsp;(-&nbsp;i&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">)&nbsp;(/&nbsp;(n&nbsp;i)&nbsp;(+&nbsp;(d&nbsp;i)&nbsp;result)))))<br>&nbsp;&nbsp;(iter&nbsp;k&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">))<br><br>(define&nbsp;(get-phai&nbsp;k)<br>&nbsp;&nbsp;(/&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;(cont-frac&nbsp;(lambda(i)&nbsp;</span><span style="color: #000000;">1.0</span><span style="color: #000000;">)&nbsp;(lambda(i)&nbsp;</span><span style="color: #000000;">1.0</span><span style="color: #000000;">)&nbsp;k)))<br><br>(define&nbsp;(get-k)<br>&nbsp;&nbsp;(define&nbsp;(iter&nbsp;i)<br>&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;(&lt;&nbsp;(abs&nbsp;(-&nbsp;(get-phai&nbsp;i)&nbsp;</span><span style="color: #000000;">1.6180</span><span style="color: #000000;">))&nbsp;</span><span style="color: #000000;">0.00005</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(iter&nbsp;(+&nbsp;i&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">))))<br>&nbsp;&nbsp;(iter&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">))</span></div>
<br>k = 11 时，精度满足 4 位 十进制数。<br><br><span style="font-weight: bold;">1.38</span><br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">(define&nbsp;(euler-d&nbsp;i)<br>&nbsp;&nbsp;(cond&nbsp;((</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">2.0</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((and&nbsp;(&gt;&nbsp;i&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">)&nbsp;(</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;(remainder&nbsp;(-&nbsp;i&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">)))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;(/&nbsp;(+&nbsp;i&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">3.0</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">2.0</span><span style="color: #000000;">))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(else&nbsp;</span><span style="color: #000000;">1.0</span><span style="color: #000000;">)))<br><br>(define&nbsp;(get-e&nbsp;k)<br>&nbsp;&nbsp;(+&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;(cont-frac&nbsp;(lambda(i)&nbsp;</span><span style="color: #000000;">1.0</span><span style="color: #000000;">)&nbsp;euler-d&nbsp;k)))</span></div>
<br><span style="font-weight: bold;">1.39</span><br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">(define&nbsp;(tan-cf&nbsp;x&nbsp;k)<br>&nbsp;&nbsp;(define&nbsp;(tan-n&nbsp;i)<br>&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;(</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;i)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(-&nbsp;(*&nbsp;x&nbsp;x))))<br>&nbsp;&nbsp;(cont-frac&nbsp;tan-n&nbsp;(lambda(i)&nbsp;(-&nbsp;(*&nbsp;i&nbsp;</span><span style="color: #000000;">2.0</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">1.0</span><span style="color: #000000;">))&nbsp;k))</span></div>
<br></span></span><img src ="http://www.cppblog.com/cuigang/aggbug/47169.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cuigang/" target="_blank">cuigang</a> 2008-04-16 00:22 <a href="http://www.cppblog.com/cuigang/archive/2008/04/16/47169.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数组类型、函数类型到左值和右值的转换</title><link>http://www.cppblog.com/cuigang/archive/2008/04/07/46464.html</link><dc:creator>cuigang</dc:creator><author>cuigang</author><pubDate>Mon, 07 Apr 2008 14:50:00 GMT</pubDate><guid>http://www.cppblog.com/cuigang/archive/2008/04/07/46464.html</guid><wfw:comment>http://www.cppblog.com/cuigang/comments/46464.html</wfw:comment><comments>http://www.cppblog.com/cuigang/archive/2008/04/07/46464.html#Feedback</comments><slash:comments>25</slash:comments><wfw:commentRss>http://www.cppblog.com/cuigang/comments/commentRss/46464.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cuigang/services/trackbacks/46464.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1、左值和右值<br><br>表达式的左值是它的地址，右值是该地址所存储的内容。比如下面代码：<br><br>x = x + 1;<br><br>这两个 x 有什么不同呢？&nbsp;&nbsp;<a href='http://www.cppblog.com/cuigang/archive/2008/04/07/46464.html'>阅读全文</a><img src ="http://www.cppblog.com/cuigang/aggbug/46464.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cuigang/" target="_blank">cuigang</a> 2008-04-07 22:50 <a href="http://www.cppblog.com/cuigang/archive/2008/04/07/46464.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的SICP习题答案（1.34）</title><link>http://www.cppblog.com/cuigang/archive/2008/04/06/46378.html</link><dc:creator>cuigang</dc:creator><author>cuigang</author><pubDate>Sun, 06 Apr 2008 08:46:00 GMT</pubDate><guid>http://www.cppblog.com/cuigang/archive/2008/04/06/46378.html</guid><wfw:comment>http://www.cppblog.com/cuigang/comments/46378.html</wfw:comment><comments>http://www.cppblog.com/cuigang/archive/2008/04/06/46378.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cuigang/comments/commentRss/46378.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cuigang/services/trackbacks/46378.html</trackback:ping><description><![CDATA[<span style="font-size: 8pt;"><span style="font-family: courier new;">这个展开过程为：<br><br style="font-family: courier new;"></span><span style="font-family: courier new;">(f f)</span><br style="font-family: courier new;"><span style="font-family: courier new;">(f 2)</span><br style="font-family: courier new;"><span style="font-family: courier new;">(2 2)<br><br style="font-family: courier new;"></span><span style="font-family: courier new;">解释器将报错，&#8216;2&#8217;是一个未定义过程。</span><br style="font-family: courier new;"><br></span><img src ="http://www.cppblog.com/cuigang/aggbug/46378.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cuigang/" target="_blank">cuigang</a> 2008-04-06 16:46 <a href="http://www.cppblog.com/cuigang/archive/2008/04/06/46378.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的SICP习题答案（1.29~1.33）</title><link>http://www.cppblog.com/cuigang/archive/2008/04/06/46375.html</link><dc:creator>cuigang</dc:creator><author>cuigang</author><pubDate>Sun, 06 Apr 2008 08:12:00 GMT</pubDate><guid>http://www.cppblog.com/cuigang/archive/2008/04/06/46375.html</guid><wfw:comment>http://www.cppblog.com/cuigang/comments/46375.html</wfw:comment><comments>http://www.cppblog.com/cuigang/archive/2008/04/06/46375.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cuigang/comments/commentRss/46375.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cuigang/services/trackbacks/46375.html</trackback:ping><description><![CDATA[<span style="font-size: 8pt; font-family: courier new;"><span style="font-weight: bold;">1.29</span><br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">(define&nbsp;(simpson&nbsp;f&nbsp;a&nbsp;b&nbsp;n)<br>&nbsp;&nbsp;(define&nbsp;(get-h)&nbsp;(/&nbsp;(-&nbsp;b&nbsp;a)&nbsp;n))<br>&nbsp;&nbsp;(define&nbsp;(get-y&nbsp;k)&nbsp;(f&nbsp;(+&nbsp;a&nbsp;(*&nbsp;k&nbsp;(get-h)))))<br>&nbsp;&nbsp;(define&nbsp;(simpson-term&nbsp;k)<br>&nbsp;&nbsp;&nbsp;&nbsp;(cond&nbsp;((</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;k&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;(get-y&nbsp;k))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;k&nbsp;n)&nbsp;(get-y&nbsp;k))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(remainder&nbsp;k&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;(*&nbsp;</span><span style="color: #000000;">2.0</span><span style="color: #000000;">&nbsp;(get-y&nbsp;k)))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(else&nbsp;(*&nbsp;</span><span style="color: #000000;">4.0</span><span style="color: #000000;">&nbsp;(get-y&nbsp;k)))))<br>&nbsp;&nbsp;(define&nbsp;(simpson-next&nbsp;k)&nbsp;(+&nbsp;k&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">))<br>&nbsp;&nbsp;(*&nbsp;(/&nbsp;(get-h)&nbsp;</span><span style="color: #000000;">3.0</span><span style="color: #000000;">)&nbsp;(sum&nbsp;simpson-term&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;simpson-next&nbsp;n)))&nbsp;</span></div>
<br><span style="font-weight: bold;">1.30</span><br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">(define&nbsp;(sum&nbsp;term&nbsp;a&nbsp;next&nbsp;b)<br>&nbsp;&nbsp;(define&nbsp;(iter&nbsp;a&nbsp;result)<br>&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;(&gt;&nbsp;a&nbsp;b)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(iter&nbsp;(next&nbsp;a)&nbsp;(+&nbsp;(term&nbsp;a)&nbsp;result))))<br>&nbsp;&nbsp;(iter&nbsp;a&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">))</span></div>
<br><span style="font-weight: bold;">1.31</span><br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008000; font-size: 8pt;">;</span><span style="color: #008000;">;递归</span><span style="color: #008000;"><br></span><span style="color: #000000;">(define&nbsp;(product-re&nbsp;term&nbsp;a&nbsp;next&nbsp;b)<br>&nbsp;&nbsp;(if&nbsp;(&gt;&nbsp;a&nbsp;b)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;(term&nbsp;a)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(product-re&nbsp;term&nbsp;(next&nbsp;a)&nbsp;next&nbsp;b))))<br></span><span style="color: #008000;">;</span><span style="color: #008000;">;迭代</span><span style="color: #008000;"><br></span><span style="color: #000000;">(define&nbsp;(product&nbsp;term&nbsp;a&nbsp;next&nbsp;b)<br>&nbsp;&nbsp;(define&nbsp;(iter&nbsp;a&nbsp;result)<br>&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;(&gt;&nbsp;a&nbsp;b)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(iter&nbsp;(next&nbsp;a)&nbsp;(*&nbsp;result&nbsp;(term&nbsp;a)))))<br>&nbsp;&nbsp;(iter&nbsp;a&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">))<br><br>(define&nbsp;(pi-product&nbsp;b)<br>&nbsp;&nbsp;(define&nbsp;(pi-term&nbsp;k)&nbsp;(/&nbsp;(*&nbsp;(-&nbsp;k&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">)&nbsp;(+&nbsp;k&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">))&nbsp;k&nbsp;k))<br>&nbsp;&nbsp;(define&nbsp;(pi-next&nbsp;k)&nbsp;(+&nbsp;k&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">))<br>&nbsp;&nbsp;</span><span style="color: #008000;">;</span><span style="color: #008000;">;(*&nbsp;4.0&nbsp;(product-re&nbsp;pi-term&nbsp;3.0&nbsp;pi-next&nbsp;b)))&nbsp;;;递归</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;(*&nbsp;</span><span style="color: #000000;">4.0</span><span style="color: #000000;">&nbsp;(product&nbsp;pi-term&nbsp;</span><span style="color: #000000;">3.0</span><span style="color: #000000;">&nbsp;pi-next&nbsp;b)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">;</span><span style="color: #008000;">;迭代</span><span style="color: #008000;"><br></span><span style="color: #000000;"><br></span></div>
<br><span style="font-weight: bold;">1.32</span><br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">(define&nbsp;(sum&nbsp;term&nbsp;a&nbsp;next&nbsp;b)<br>&nbsp;&nbsp;(accumulate&nbsp;+&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;term&nbsp;a&nbsp;next&nbsp;b))<br><br>(define&nbsp;(product&nbsp;term&nbsp;a&nbsp;next&nbsp;b)<br>&nbsp;&nbsp;(accumulate&nbsp;*&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;term&nbsp;a&nbsp;next&nbsp;b))<br><br></span><span style="color: #008000;">;</span><span style="color: #008000;">;递归</span><span style="color: #008000;"><br></span><span style="color: #000000;">(define&nbsp;(accumulate-re&nbsp;combiner&nbsp;null-value&nbsp;term&nbsp;a&nbsp;next&nbsp;b)<br>&nbsp;&nbsp;(if&nbsp;(&gt;&nbsp;a&nbsp;b)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;null-value<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(combiner&nbsp;(term&nbsp;a)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(accumulate-re&nbsp;combiner&nbsp;null-value&nbsp;term&nbsp;(next&nbsp;a)&nbsp;next&nbsp;b))))<br><br></span><span style="color: #008000;">;</span><span style="color: #008000;">;迭代</span><span style="color: #008000;"><br></span><span style="color: #000000;">(define&nbsp;(accumulate&nbsp;combiner&nbsp;null-value&nbsp;term&nbsp;a&nbsp;next&nbsp;b)<br>&nbsp;&nbsp;(define&nbsp;(iter&nbsp;a&nbsp;result)<br>&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;(&gt;&nbsp;a&nbsp;b)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(iter&nbsp;(next&nbsp;a)&nbsp;(combiner&nbsp;(term&nbsp;a)&nbsp;result))))<br>&nbsp;&nbsp;(iter&nbsp;a&nbsp;null-value))<br></span></div>
<br><span style="font-weight: bold;">1.33</span><br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">(define&nbsp;(filtered-accumulate&nbsp;combiner&nbsp;null-value&nbsp;term&nbsp;a&nbsp;next&nbsp;b&nbsp;filter?)<br>&nbsp;&nbsp;(define&nbsp;(iter&nbsp;a&nbsp;result)<br>&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;(&gt;&nbsp;a&nbsp;b)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;(filter?&nbsp;(term&nbsp;a))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(iter&nbsp;(next&nbsp;a)&nbsp;(combiner&nbsp;(term&nbsp;a)&nbsp;result))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(iter&nbsp;(next&nbsp;a)&nbsp;result))))<br>&nbsp;&nbsp;(iter&nbsp;a&nbsp;null-value))<br><br>(define&nbsp;(sum-prime&nbsp;a&nbsp;b)<br>&nbsp;&nbsp;(define&nbsp;(sum-prime-term&nbsp;k)&nbsp;k)<br>&nbsp;&nbsp;(define&nbsp;(sum-prime-next&nbsp;k)&nbsp;(+&nbsp;k&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">))<br>&nbsp;&nbsp;(filtered-accumulate&nbsp;+&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;sum-prime-term&nbsp;a&nbsp;sum-prime-next&nbsp;b&nbsp;prime?))<br><br>(define&nbsp;(relatively-prime-product&nbsp;n)<br>&nbsp;&nbsp;(define&nbsp;(relatively-prime?&nbsp;k)&nbsp;(</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(gcd&nbsp;k&nbsp;n)&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">))<br>&nbsp;&nbsp;(define&nbsp;(term&nbsp;k)&nbsp;k)<br>&nbsp;&nbsp;(define&nbsp;(next&nbsp;k)&nbsp;(+&nbsp;k&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">))<br>&nbsp;&nbsp;(filtered-accumulate&nbsp;*&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;term&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;next&nbsp;(-&nbsp;n&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">)&nbsp;relatively-prime?))</span></div>
<br><br><br></span><img src ="http://www.cppblog.com/cuigang/aggbug/46375.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cuigang/" target="_blank">cuigang</a> 2008-04-06 16:12 <a href="http://www.cppblog.com/cuigang/archive/2008/04/06/46375.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>对数组名取地址是什么？</title><link>http://www.cppblog.com/cuigang/archive/2008/04/04/46271.html</link><dc:creator>cuigang</dc:creator><author>cuigang</author><pubDate>Fri, 04 Apr 2008 12:06:00 GMT</pubDate><guid>http://www.cppblog.com/cuigang/archive/2008/04/04/46271.html</guid><wfw:comment>http://www.cppblog.com/cuigang/comments/46271.html</wfw:comment><comments>http://www.cppblog.com/cuigang/archive/2008/04/04/46271.html#Feedback</comments><slash:comments>17</slash:comments><wfw:commentRss>http://www.cppblog.com/cuigang/comments/commentRss/46271.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cuigang/services/trackbacks/46271.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这两天有人问以下有什么代码有什么不同？<br><br>1 int array[100];<br>2 <br>3 memset(array,  0, sizeof(array));<br>4 memset(&array, 0, sizeof(array));&nbsp;&nbsp;<a href='http://www.cppblog.com/cuigang/archive/2008/04/04/46271.html'>阅读全文</a><img src ="http://www.cppblog.com/cuigang/aggbug/46271.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cuigang/" target="_blank">cuigang</a> 2008-04-04 20:06 <a href="http://www.cppblog.com/cuigang/archive/2008/04/04/46271.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的SICP习题答案（1.24~1.28）</title><link>http://www.cppblog.com/cuigang/archive/2008/03/31/45781.html</link><dc:creator>cuigang</dc:creator><author>cuigang</author><pubDate>Sun, 30 Mar 2008 16:21:00 GMT</pubDate><guid>http://www.cppblog.com/cuigang/archive/2008/03/31/45781.html</guid><wfw:comment>http://www.cppblog.com/cuigang/comments/45781.html</wfw:comment><comments>http://www.cppblog.com/cuigang/archive/2008/03/31/45781.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cuigang/comments/commentRss/45781.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cuigang/services/trackbacks/45781.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt;"><span style="font-size: 8pt;"><span style="font-family: courier new; font-weight: bold;">1.24</span><br style="font-family: courier new;"><span style="font-family: courier new; font-size: 10pt;">对于Fermat检查，因为具有log n 的增长阶，所以对于 n^2 和 n 的检查的时间比 理论上应该是 2：1， 实际上，经过测试也比较接近，当n比较大时。<br>若与预计不符，可能因为 n 比较小，或者字长发生变化，比如 n &gt; 2^32 （参见下题）<br><br><span style="font-weight: bold;">1.25</span><br>仅从理论分析，Alyssa 的改动不会引起增长阶的变化，但实际上当 Fermat 检查的 n 稍微大一点，速度就会很慢。主要原因 就是 base^exp 是一个非常大的数，可能远远超过 一个32位机字的表示范围 2^32 ，在 scheme 里可能用若干个 32-bit 靠软件实现运算，这将导致计算急速增长。无论是传递、运算还是求模。<br>实际上 1.22、1.23、1.24 的几个题目可能都会遇到字长变化引起的计算速度突变。<br><br><span style="font-weight: bold;">1.26</span><br>Fermat 检查正是因为 连续求平方的求幂方法，使得的增长阶变为 log n， 而这均来源于 b^(2n) = (b^n)^2，</span></span><span style="font-size: 8pt;"><span style="font-family: courier new; font-size: 10pt;">Louis 的方法让求幂又变成了连乘，b^(2n) = b^n*b^n = (b*b*...*b)*(b*b*...*b)，求幂的增长阶变成了 O(n)，Fermat 检查的增长阶自然也变成了 O(n)。<br><br><span style="font-weight: bold;">1.27</span><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000; font-size: 10pt;">(define&nbsp;(fermat-test&nbsp;n)<br>&nbsp;&nbsp;(fermat-iter&nbsp;(-&nbsp;n&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">)&nbsp;n))<br><br>(define&nbsp;(fermat-iter&nbsp;a&nbsp;n)<br>&nbsp;&nbsp;(cond&nbsp;((</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;a&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;#t)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(expmod&nbsp;a&nbsp;n&nbsp;n)&nbsp;a)&nbsp;(fermat-iter&nbsp;(-&nbsp;a&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">)&nbsp;n))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(else&nbsp;#f)))</span></div>
<br><span style="font-weight: bold;">1.28</span><br>首先来看，Fermat 小定理的一个变形：<br><br>p 是素数, 1&lt;a&lt;p, 有 a^p % p = a<br>==&gt; a^p = kp + a ==&gt; a^p - a = kp ==&gt; a(a^(p-1)-1) = kp ==&gt; a^(p-1) -1 = k'p<br>==&gt; a^(p-1) % p = 1<br><br>这个变形就是题目中提到的，这个形式和费马小定理是等价的（但是奇怪的是，我没有发现已知的几个Carmichael数能够躲过这个变形的检查，有待研究<span style="color: #3925c6; font-weight: bold;">①</span>）<br><br>再来看，miller-rabin 素性测试的原理：<br><br>p 是素数， 1&lt;a&lt;p, 且 a^2 % p = 1<br>==&gt; (a^2-1) % p = 0 ==&gt; (a+1)(a-1) % p =0<br>那么 a+1 % p = 0 或者 a-1 % p =0,<br>又 a&lt;p 且 p 是素数，所以<br>a = 1 或者 a = p-1 （这两个叫做 1模n的平凡平方根）<br></span></span></span><span style="font-size: 10pt;"><span style="font-size: 8pt;"><span style="font-family: courier new; font-size: 10pt;"></span></span></span><br><span style="font-size: 10pt;"><span style="font-size: 8pt;"><span style="font-family: courier new; font-size: 10pt;"></span></span><span style="font-size: 8pt;">代码如下：<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%; font-family: courier new;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000; font-size: 10pt; font-family: courier new;">(define&nbsp;(check-nontrivial-sqrt-of-one&nbsp;a&nbsp;n)<br>&nbsp;&nbsp;(define&nbsp;(check-</span><span style="color: #000000; font-family: courier new;">1?&nbsp;t)<br>&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;(and&nbsp;(&gt;&nbsp;a&nbsp;1</span><span style="color: #000000;"><span style="font-family: courier new;">)</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(&lt;&nbsp;a&nbsp;(-&nbsp;n&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;t&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;t))<br>&nbsp;&nbsp;(check-</span><span style="color: #000000;">1</span><span style="color: #000000;">?&nbsp;(remainder&nbsp;(square&nbsp;a)&nbsp;n)))<br><br>(define&nbsp;(expmod&nbsp;base&nbsp;exp&nbsp;m)<br>&nbsp;&nbsp;(cond&nbsp;((</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;exp&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((even?&nbsp;exp)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">;</span><span style="color: #008000;">(remainder&nbsp;(square&nbsp;(expmod&nbsp;base&nbsp;(/&nbsp;exp&nbsp;2)&nbsp;m))&nbsp;m))</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(check-nontrivial-sqrt-of-one&nbsp;(expmod&nbsp;base&nbsp;(/&nbsp;exp&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">)&nbsp;m)&nbsp;m))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(remainder&nbsp;(*&nbsp;base&nbsp;(expmod&nbsp;base&nbsp;(-&nbsp;exp&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">)&nbsp;m))&nbsp;m))))<br><br>(define&nbsp;(miller-rabin-test&nbsp;n)<br>&nbsp;&nbsp;(define&nbsp;(iter&nbsp;x&nbsp;n)<br>&nbsp;&nbsp;&nbsp;&nbsp;(cond&nbsp;((</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;x&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;#t)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(expmod&nbsp;x&nbsp;(-&nbsp;n&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">)&nbsp;n)&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">)&nbsp;(iter&nbsp;(-&nbsp;x&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">)&nbsp;n))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(else&nbsp;#f)))<br>&nbsp;&nbsp;(iter&nbsp;(-&nbsp;n&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">)&nbsp;n))</span></div>
<br><span style="color: #3925c6; font-weight: bold;">① 对于 </span></span></span><span style="font-size: 10pt; color: #3925c6; font-weight: bold;"><span style="font-size: 8pt;"><span style="font-family: courier new; font-size: 10pt;">Carmichael 数 n ，实际上不能完全通过 </span></span></span><span style="font-size: 10pt; color: #3925c6; font-weight: bold;"><span style="font-size: 8pt;"><span style="font-family: courier new; font-size: 10pt;"></span></span></span><span style="font-size: 10pt;"><span style="font-size: 8pt;"><span style="font-family: courier new; font-size: 10pt;"><span style="color: #3925c6; font-weight: bold;">a^(n-1)%n = 1 的检查</span></span></span></span><span style="font-size: 10pt; color: #3925c6; font-weight: bold;"><span style="font-size: 8pt;"><span style="font-family: courier new; font-size: 10pt;">，除非 a 与 n 互素，当 a 为 n 的素因子时，不能通过，比如 </span></span><span style="font-size: 8pt;"></span><span style="font-size: 8pt;"><span style="font-family: courier new; font-size: 10pt;">Carmichael 第一个 561 = 3*11*17， 而 3^560%561 = 375 &#8800; 1 。可以程序验证这个。 所以我认为，</span></span><span style="font-size: 8pt;"><span style="font-family: courier new; font-size: 10pt;">a^(n-1)%n = 1 的检查比 a^n%n = a 的检查更严格，是不是不存在合数通过完全的 </span></span></span><span style="font-size: 10pt;"><span style="font-size: 8pt;"><span style="font-family: courier new; font-size: 10pt;"><span style="color: #3925c6; font-weight: bold;">a^(n-1)%n = 1 的检查呢？我不敢说。但把这个结论暂时记在这里，希望能得到帮助或者反驳。2008-04-02 23:56<br><br></span><br></span></span></span> <img src ="http://www.cppblog.com/cuigang/aggbug/45781.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cuigang/" target="_blank">cuigang</a> 2008-03-31 00:21 <a href="http://www.cppblog.com/cuigang/archive/2008/03/31/45781.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>谨记于此</title><link>http://www.cppblog.com/cuigang/archive/2008/03/30/45720.html</link><dc:creator>cuigang</dc:creator><author>cuigang</author><pubDate>Sat, 29 Mar 2008 16:23:00 GMT</pubDate><guid>http://www.cppblog.com/cuigang/archive/2008/03/30/45720.html</guid><wfw:comment>http://www.cppblog.com/cuigang/comments/45720.html</wfw:comment><comments>http://www.cppblog.com/cuigang/archive/2008/03/30/45720.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/cuigang/comments/commentRss/45720.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cuigang/services/trackbacks/45720.html</trackback:ping><description><![CDATA[<span style="font-family: Georgia; font-size: 10pt;">我们的世界是模糊的、连续的、不精确的，但软件是精确、离散的、形式化的，这就注定了软件不能完全描述现实世界。因此我们需要知道描述哪些部分，忽略哪些部分，这就是软件的本质问题。</span><span style="font-size: 10pt; font-family: Tahoma;"><br>--- Tom Demarco<br><br>任何一个正在构建大型系统的人，天天面对的中心议题就是：如何剔除不必要的、人为的、自找的复杂部分，并控制好剩下的，无可逃避的复杂性。<br>--- Betrand Meyer
</span><span style="font-family: Georgia;"></span><span style="font-size: 10pt;"></span>
<p style="text-indent: 2em; font-family: Tahoma;"><em><strong></strong> </em> </p>
<br><img src ="http://www.cppblog.com/cuigang/aggbug/45720.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cuigang/" target="_blank">cuigang</a> 2008-03-30 00:23 <a href="http://www.cppblog.com/cuigang/archive/2008/03/30/45720.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的SICP习题答案（1.21~1.23）</title><link>http://www.cppblog.com/cuigang/archive/2008/03/28/45648.html</link><dc:creator>cuigang</dc:creator><author>cuigang</author><pubDate>Fri, 28 Mar 2008 15:44:00 GMT</pubDate><guid>http://www.cppblog.com/cuigang/archive/2008/03/28/45648.html</guid><wfw:comment>http://www.cppblog.com/cuigang/comments/45648.html</wfw:comment><comments>http://www.cppblog.com/cuigang/archive/2008/03/28/45648.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cuigang/comments/commentRss/45648.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cuigang/services/trackbacks/45648.html</trackback:ping><description><![CDATA[<span style="font-size: 8pt; font-family: courier new;"><span style="font-size: 8pt;"><span style="font-weight: bold; font-size: 8pt;">1.21<br><br></span><span style="font-size: 8pt; font-family: courier new;">
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">&gt;&nbsp;(smallest-divisor&nbsp;</span><span style="color: #000000;">199</span><span style="color: #000000;">)<br></span><span style="color: #000000;">199</span><span style="color: #000000;"><br>&gt;&nbsp;(smallest-divisor&nbsp;</span><span style="color: #000000;">1999</span><span style="color: #000000;">)<br></span><span style="color: #000000;">1999</span><span style="color: #000000;"><br>&gt;&nbsp;(smallest-divisor&nbsp;</span><span style="color: #000000;">19999</span><span style="color: #000000;">)<br></span><span style="color: #000000;">7</span><span style="color: #000000;"><br>&gt;</span></div>
</span><span style="font-weight: bold; font-size: 8pt;"><br></span><span style="font-weight: bold;">1.22</span><br>在 DrScheme 中没有对应的 runtime 过程，我们用内建的 current-milliseconds
来代替，这个过程返回的是系统的 ms 数。<br>同时，在 Windows 下无法精确表示 16ms 以下的精度（可能时间片的大小是 16ms ），所以这里用比较大的数来测试。<br>代码如下<br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">(define&nbsp;(even?&nbsp;x)&nbsp;(</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(remainder&nbsp;x&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">))<br><br>(define&nbsp;(runtime)&nbsp;(current-milliseconds))<br><br>(define&nbsp;(start-prime-test&nbsp;n&nbsp;start-time)<br>&nbsp;&nbsp;(and&nbsp;(prime?&nbsp;n)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(report-prime&nbsp;(-&nbsp;(runtime)&nbsp;start-time))))<br><br>(define&nbsp;(report-prime&nbsp;elapsed-time)<br>&nbsp;&nbsp;(display&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;***&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">)<br>&nbsp;&nbsp;(display&nbsp;elapsed-time))<br><br>(define&nbsp;(search-iter&nbsp;cur-num&nbsp;index&nbsp;start-time)<br>&nbsp;&nbsp;(newline)<br>&nbsp;&nbsp;(display&nbsp;cur-num)<br>&nbsp;&nbsp;(if&nbsp;(not&nbsp;(</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;index&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;(start-prime-test&nbsp;cur-num&nbsp;start-time)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(search-iter&nbsp;(+&nbsp;cur-num&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">)&nbsp;(-&nbsp;index&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">)&nbsp;start-time)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(search-iter&nbsp;(+&nbsp;cur-num&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">)&nbsp;index&nbsp;start-time))))<br><br>(define&nbsp;(search-for-primes&nbsp;start-number)<br>&nbsp;&nbsp;(if&nbsp;(even?&nbsp;start-number)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(search-iter&nbsp;(+&nbsp;start-number&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">&nbsp;(runtime))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(search-iter&nbsp;start-number&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">&nbsp;(runtime))))<br></span></div>
<br>这里用到了 prime? 谓词，代码不再复述。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>|------+--------+--------+-------|<br>|10^9&nbsp; | 10^10&nbsp; | 10^11&nbsp; | 10^12 | =&gt; start-number<br>|------+--------+--------+-------|<br>|31&nbsp; &nbsp; | 250&nbsp;&nbsp;&nbsp; | 609&nbsp;&nbsp;&nbsp;  |  1953&nbsp; | (ms)<br>|47&nbsp;&nbsp;&nbsp; | 406&nbsp;&nbsp;&nbsp;  |  1203&nbsp;&nbsp; | 3844&nbsp; |<br>|78&nbsp;&nbsp;&nbsp; | 625&nbsp;&nbsp;&nbsp;  |  1859&nbsp;&nbsp; | 5719&nbsp; |<br>|------+--------+--------+-------|<br><br></span>从上表可以看出，除了前两列之间，后列的数字都是前列数字的 3 倍左右，近似于 &#8730;10 ≈ 3.16。实际上，随着 n 的不断增大，这个数会逐渐逼近 &#8730;10。<br><br><span style="font-weight: bold;">1.23<br><br></span>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">(define&nbsp;(next&nbsp;n)<br>&nbsp;&nbsp;(if&nbsp;(</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;n&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">&nbsp;(+&nbsp;n&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">)))<br><br>(define&nbsp;(find-divisor&nbsp;n&nbsp;test-divisor)<br>&nbsp;&nbsp;(cond&nbsp;((&gt;&nbsp;(square&nbsp;test-divisor)&nbsp;n)&nbsp;n)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((divides?&nbsp;test-divisor&nbsp;n)&nbsp;test-divisor)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(else&nbsp;(find-divisor&nbsp;n&nbsp;(next&nbsp;test-divisor)))))</span></div>
<br>计算结果如下：<br>|--------+--------+-------|<br>| 10^10&nbsp; | 10^11&nbsp; | 10^12 | =&gt; start-number<br>|--------+--------+-------|<br>| 141&nbsp; &nbsp; | 297 &nbsp;&nbsp;  | 1078&nbsp; | (ms)<br>| 219 &nbsp;&nbsp;  | 609 &nbsp;&nbsp; | 2093&nbsp; |<br>| 313 &nbsp;&nbsp;  | 984&nbsp; &nbsp; | 3140&nbsp; |<br>|--------+--------+-------|
<br><br>可以看出这个比值大约在 1.8(1/0.55) 左右，可能原因是其它的计算需要时间，但当 n 不断增大，其它计算是常数阶，这个比值会不断接近2。<br><br><br></span><img src ="http://www.cppblog.com/cuigang/aggbug/45648.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cuigang/" target="_blank">cuigang</a> 2008-03-28 23:44 <a href="http://www.cppblog.com/cuigang/archive/2008/03/28/45648.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的SICP习题答案（1.20）</title><link>http://www.cppblog.com/cuigang/archive/2008/03/27/45554.html</link><dc:creator>cuigang</dc:creator><author>cuigang</author><pubDate>Thu, 27 Mar 2008 13:59:00 GMT</pubDate><guid>http://www.cppblog.com/cuigang/archive/2008/03/27/45554.html</guid><wfw:comment>http://www.cppblog.com/cuigang/comments/45554.html</wfw:comment><comments>http://www.cppblog.com/cuigang/archive/2008/03/27/45554.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cuigang/comments/commentRss/45554.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cuigang/services/trackbacks/45554.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt; font-family: courier new;"><span style="font-weight: bold;">1.20</span><br>下面用 % 表示过程 remainder，那么正则序的过程如下：<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">&nbsp;(gcd&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">)<br>&nbsp;(if&nbsp;(</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;(gcd&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">)))<br>&nbsp;(gcd&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">))<br>&nbsp;(if&nbsp;(</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;</span><span style="color: #008000;">;</span><span style="color: #008000;">&lt;##&nbsp;&nbsp;1&gt;&nbsp;[6]</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(gcd&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">)&nbsp;(%&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">))<br>&nbsp;(gcd&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">)&nbsp;(%&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">)))<br>&nbsp;(if&nbsp;(</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(%&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">))&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">;</span><span style="color: #008000;">&lt;##&nbsp;&nbsp;2&gt;&nbsp;[4]</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(gcd&nbsp;(%&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">))&nbsp;(%&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">)&nbsp;(%&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">)))))<br>&nbsp;(gcd&nbsp;(%&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">))&nbsp;(%&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">)&nbsp;(%&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">))))<br>&nbsp;(if&nbsp;(</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(%&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">)&nbsp;(%&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">)))&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;</span><span style="color: #008000;">;</span><span style="color: #008000;">&lt;##&nbsp;4&gt;[2]</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(%&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(gcd&nbsp;(%&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">)&nbsp;(%&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">)))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(%&nbsp;(%&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">))&nbsp;(%&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">)&nbsp;(%&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">))))))<br>&nbsp;(gcd&nbsp;(%&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">)&nbsp;(%&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">)))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(%&nbsp;(%&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">))&nbsp;(%&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">)&nbsp;(%&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">))))))<br>&nbsp;(if&nbsp;(</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(%&nbsp;(%&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">))&nbsp;(%&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">)&nbsp;(%&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">)))))&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;</span><span style="color: #008000;">;</span><span style="color: #008000;">&lt;##&nbsp;7&gt;[0]</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(%&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">)&nbsp;(%&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">)))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(gcd ...)<br>&nbsp;(%&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">)&nbsp;(%&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">)))&nbsp;&nbsp;</span><span style="color: #008000;">;</span><span style="color: #008000;">&lt;##&nbsp;4&gt;[2]</span><span style="color: #008000;"><br></span></div>
<br>可以看出需要调用 remainder 共 1+2+4+7+4 = 18 次。<br><br>应用序计算过程如下：<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">(gcd&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">)<br>(if&nbsp;(</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;(gcd&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">&nbsp;(%&nbsp;</span><span style="color: #000000;">206</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">)))&nbsp;</span><span style="color: #008000;">;</span><span style="color: #008000;">&lt;##&gt;</span><span style="color: #008000;"><br></span><span style="color: #000000;">(gcd&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">)<br>(if&nbsp;(</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">&nbsp;(gcd&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">&nbsp;(%&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">;</span><span style="color: #008000;">&lt;##&gt;</span><span style="color: #008000;"><br></span><span style="color: #000000;">(gcd&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">)<br>(if&nbsp;(</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">&nbsp;(gcd&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">&nbsp;(%&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">;</span><span style="color: #008000;">&lt;##&gt;</span><span style="color: #008000;"><br></span><span style="color: #000000;">(gcd&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">)<br>(if&nbsp;(</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">&nbsp;(gcd&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;(%&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">;</span><span style="color: #008000;">&lt;##&gt;</span><span style="color: #008000;"><br></span><span style="color: #000000;">(gcd&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)<br>(if&nbsp;(</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;(gcd&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;(%&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)))<br></span><span style="color: #000000;">2</span></div>
<br>可以看出共需 4 次。<br><br><br></span>  <img src ="http://www.cppblog.com/cuigang/aggbug/45554.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cuigang/" target="_blank">cuigang</a> 2008-03-27 21:59 <a href="http://www.cppblog.com/cuigang/archive/2008/03/27/45554.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>