Miller_Rabin素数测试【学习笔记】
引语: 在数论中,对于素数的研究一直就很多,素数测试的方法也是非常多,如埃式筛法,6N±1法,或者直接暴力判(试除法)。但是如果要判断比较大的数是否为素数,那么传统的试除法和筛法都不再适用。所以我们需要学习 Miller_Rabin 算法。 知识准备 + 算法推导: 1.威尔逊定理:若p是素数,则 ( p -1) !≡ -1( mod p ) . 2.有趣的是,威尔逊定理的逆命题也是正确的:设n是正整数且 n ≥ 2 ,若 ( n -1) !≡ -1( mod n ) ,则 n 是素数. 很多朋友可能在学习的时候会碰到威尔逊定理,它主要是告诉我们,它的逆定理给出了一种素性检验的方法(其实用的少,原因在后),遗憾的是,这不是一个实用的检验法,因为这需要进行 ( n -2) 次模n的乘法运算才能得到 ( n -1)! 模 n 的值,运算量达到了 O( n(log 2 n) 2 ) 次位运算。 行吧,那我们只能另谋出路了。 3.费马小定理:设 p 是一个素数, a 是一个正整数且 p 不整除 a ,则 a p- 1 ≡ 1( mod p ) . 4.伪素数:令 b 是一个正整数. 若 n 是一个正合数且 b n ≡ b ( mod n ) ,则称 n 为以 b 为基的伪素数(有时也称费马伪素数)。(唉~,这是虚伪的素数,它爱着费马测试,却是合数)。 辣个男人,它来了! 那么基于费马小定理