(lambda (p) (list (lambda (a b) (let ((x (+ a b))) (if (< x p) x (- x p)))) (lambda (a) (if (zero? a) 0 (- p a))) (lambda (a b) (modulo (* a b) p)) (let* ((egcd (fileVal "egcd")) (rc (lambda (j) (modulo (cdr (egcd p j)) p)))) (if (< p 10000) (let ((a (make-vector p 0))) (lambda (x) (let ((z (vector-ref a x))) (if (zero? z) (let ((y (rc x))) (vector-set! a x y) (vector-set! a y x))) (vector-ref a x)))) rc))))