现在有效的素数检验算法基本都基于概率性的检测,
虽然2002诞生了AKS算法,但是在实际应用中,依然依赖概率性检测算法。
Solovay, Strassen于1974年最早提出了概率性的素数检验方法,我们现在称为Solovay-Strassen检测
代码:(其中expmod是幂取模(见rabin-miller的代码),jacobi是jacobi符号计算函数)
(defun solovay-strassen-once (n)
(let ((a (+ 1 (random n))))
(if (= a n) (setf a (- a 1)))
(if (and (= 1 (gcd a n))
(or (= (jacobi a n) (expmod a (/ (- n 1) 2) n))
(=