zoukankan      html  css  js  c++  java
  • 【SICP练习】18 练习1.24

    

    练习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 times)

       (cond ((= times 0) true)

             ((fermat-test n) (fast-prime? n (- times 1)))

             (else false)))

    (define (expmod base exp m)

       (cond ((= exp 0) 1)

             ((even? exp) (remainder (square (expmod base (/ exp 2) m)) m))

             (else (remainder (* base (expmod base (- exp 1) m)) m))))

    于是就有了一个新的prime?函数如下:

    (define (prime? n)

       (fast-prime? n 100))

    然后载入上一题中的get-time&prime函数,如果已经在上一题中保存了起来现在就可以直接load了。然后经过一番测试后,结论很明显咯。练习1.22中的get-time&prime函数的复杂度为Θ(√n),而本题中的复杂度为Θ(logn)

    版权声明:本文为 NoMasp柯于旺 原创文章,如需转载请联系本人。

  • 相关阅读:
    Spring使用@Value注解各种类型的值
    Jdom生成xml文件时的特殊字符问题
    将博客搬至CSDN
    ubuntu/mint添加字体
    linux保持ssh连接
    servlet 重定向与转发区别
    u盘写保护
    修改默认终端
    sudo apt-get update 无法获得锁
    logback多线程日志MDC
  • 原文地址:https://www.cnblogs.com/NoMasp/p/4786212.html
Copyright © 2011-2022 走看看