摘要:
练习1.27这道题的场景是在注释47中,博主更关心的问题是:(第三行)撞上能欺骗费马检查的值的概率有多少,居然会比什么宇宙射线造成计算机出差。后者个人感觉是永远不会发生的,前者倒是还有可能发生。希望把前者的概率算出来的童鞋将过程列出来啦!言归正传,题目的意思就是要去验算注释47中的那几个Carm... 阅读全文
摘要:
练习1.26这本书的练习好像很多都和某个人有关,不愧是一本经典著作,通过MIT大量的修修补补。下面我们进入正题吧,Louis的问题就在于计算了2次(expmod base (/ exp 2) m),如果是用的square,则只会计算一次。更何况在这多余的一次里,又是一个漫长的迭代。Lisp最吸引... 阅读全文
摘要:
练习1.25这道题由Alyssa的一个另一版本的expmod来引出,这个expmod的功能和之前的一样的。但是之前版本的expmod每次都有一个remainder来讲乘幂控制在一个不大的范围内,这样通过不断的迭代,将很大的数字分解开来得以加快计算速度。而题目中这一版本的expmod则只通过了一次... 阅读全文
摘要:
练习1.24我们先将书中已给出的代码写入Edwin中。(define (fermat-test n)(define (try-it a)(= (expmod a n n) a))(try-it (+ 1 (random (- n 1)))))(define (fast-prime? n time... 阅读全文
摘要:
练习1.23首先我们按照题目要求来写出相应的next函数,然后再修改find-divisor函数。(define (next x)(if(= x 2)3(+ n 2)))(define(find-divisor ntest-divisor)(cond((> (square test-diviso... 阅读全文
摘要:
练习1.22这道题中需要判断素数的部分书中都已经列出来了,但要求是要找出多个素数,因此我们要有一个能够不断求素数的函数。在C等语言中我们可以通过一个for循环来轻易地求出来,在Scheme中我们完全可以用迭代来实现这一功能。另外因为是要的素数,因此完全不用考虑偶数了。于是我们先来写一个不断求奇数... 阅读全文
摘要:
练习1.21这道题几乎没有难度,除非在把书中函数写入到Edwin中时输入错误。(smallest-divisor 199);Value: 199(smallest-divisor 1999);Value: 1999(smallest-divisor 19999);Value: 19999 ... 阅读全文