问题引入
给定一个数 a a a,要求判断 a a a是否为素数
如果 a a a为一个很小的数,我们可以很快的判断出它是否为素数
但,如果 a a a为一个超级大的数,我们又该如何求解呢?
算法思想
首先介绍两个定理:
1、费马小定理: 若 p 为 素 数 , 则 a p − 1 ≡ 1 ( m o d p ) 若p为素数,则a^{p-1}\equiv1(mod \ p) 若p为素数,则ap−1≡1(mod p)
2、二次探测定理: 若 x 2 ≡ 1 ( m o d p ) 且 p 为 素 数 , 那 么 x = 1 或 p − 1 若x^2\equiv1(mod \ p)且p为素数,那么x=1或p-1 若x2≡1(mod