我是Scheme的新手.我已经尝试并使用PLT方案实现了Rabin-Miller算法的概率变体.我知道这是概率性的,但我大部分时间都得到了错误的结果.我用C实现了同样的东西,它运行良好(从未尝试过失败).我在调试时获得了预期的输出,但是当我运行时,它几乎总是以不正确的结果返回.我使用了维基百科的算法.
(define expmod( lambda(b e m)
;(define result 1)
(define r 1)
(let loop()
(if (bitwise-and e 1)
(set! r (remainder (* r b) m)))
(set! e (arithmetic-shift e -1))
(set! b (remainder (* b b) m))
(if (> e 0)
(loop)))r))
(define rab_mil( lambda(n k)
(call/cc (lambda(breakout)
(define s 0)
(define d 0)
(define a 0)
(define n1 (- n 1))
(define x 0)
(let loop((count 0))
(if (=(remainder n1 2) 0)
(begin
(set! count (+ count …
Run Code Online (Sandbox Code Playgroud)