; Miller-Rabin prime tester (let ((mod-exp (fileVal "mod-exp"))) (lambda (a n) (or (= n 2) (let* ((nm1 (- n 1))(pr (let z ((d nm1)(k 0))(if (odd? d)(cons d k) (z (/ d 2)(+ k 1))))) (d (car pr))(s (cdr pr))) (let lp ((r 0)(y (mod-exp a d n))) (or (and (= r 0)(= y 1)) (= y nm1) (and (< r (- s 1))(lp (+ r 1)(modulo (* y y) n))))))))) ((fileVal "Miller-Rabin") 675938 1000000000001)