6 lines
192 B
Common Lisp
6 lines
192 B
Common Lisp
(defun mod-expt (a n m)
|
|
(loop with c = 1 while (plusp n) do
|
|
(if (oddp n) (setf c (mod (* a c) m)))
|
|
(setf n (ash n -1))
|
|
(setf a (mod (* a a) m))
|
|
finally (return c)))
|