expmod的质疑解惑

secje posted @ 2010年5月10日 09:03 in sicp , 683 阅读

 

(define (square x) (* x x))
(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))))

本来x*y%m=b*d%m=((x%m)*(y%m))%m

 

(define (square x) (* x x))
(define (expmod base exp m)
  (cond ((= exp 0) 1)
        ((even? exp)
         (remainder (square (expmod base (/ exp 2) m))
                    m))
        (else
         (remainder (* (remainder base m) (expmod base (- exp 1) m))
                    m))))

这里设

x

y=a*m+b

x*y%m=(a*m*x+b*x)%m=b*x%m=(x*(y%m))%m得证


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter