先上题目
再来代码
- (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]
- (= (expmod a n n) a)
- )
- (try-it (+ 1 (rand (- n 1))))
- )
- (defn fast-prime? [n times]
- (cond (= times 0) true
- (fermat-test n) (fast-prime? n (- times 1))
- :else false)
- )
- (defn start-prime-test [n start-time]
- (if (fast-prime? n 1)
- (report-prime (- (runtime) start-time))
- )
- )
来看看执行结果
果然是人间悲剧,居然栈溢出了,我也不知道是什么情况。初步判定是代码问题。但是确实无法理解到题目的意图内容。如果后续能get到,我就来修改补充下。