习题1.27

博客内容讲述了在Clojure中实现习题1.27,该习题涉及对小于561的数字进行561次方运算,并检查结果是否与模561相同。测试显示所有小于561的数字都通过了费曼检查,即561次方后仍与原数模相同。而对于非素数,执行结果显示为'no',未能通过测试。
摘要由CSDN通过智能技术生成

先写代码

(defn square [x] (* x x))
(defn expmod[base exp m]
  (cond (= exp 0) 1
        (even? exp) (mod (square (expmod base (/ exp 2) m)) m)
        :else (mod (* base (expmod base (- exp 1) m)) m)
        )
  )



(defn fermat-test[n]
  (defn try-it [a]
    (cond (= a n) (println "test end" n);
          (= (expmod a n n) (mod a n)) (try-it (+ 1 a))
          :else (println "no") 
          )
    )
  (try-it (+ 1 0))
)

执行结果如下

输出结果显示,对于每一个小于561的数字,他的561次方 和他与561的模相同,也就是通过了测试。

 

对于一个非素数,执行结果显示为no,表明没有逃过费曼检查测试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值