【SICP练习】21 练习1.27
练习1.27
这道题的场景是在注释47中,博主更关心的问题是:(第三行)撞上能欺骗费马检查的值的概率有多少,居然会比什么宇宙射线造成计算机出差。后者个人感觉是永远不会发生的,前者倒是还有可能发生。希望把前者的概率算出来的童鞋将过程列出来啦!
言归正传,题目的意思就是要去验算注释47中的那几个Carmichael,那就来code吧:
(define (find-carmichael n)
(define (find-carmichael-test x n)
(cond((= x n) #t)
((same-remainder?x n)
(find-carmichael-test(+ x 1) n))
((else#f)))
(define (same-remainder? x n)
(= (expmod x n n) x))
(find-carmichael-test 1 n))
当然了,这里要load保存好的expmod函数。然后就是测试了:
(carmichael-test 6601)
;Value: #t
其他的都一样的返回结果,不然就是函数写错了。
版权声明:本文为 NoMasp柯于旺 原创文章,如需转载请联系本人。