1.素数
(1)朴素素数测试:
对于一个数n,n要么是素数要么有一个小于等于\(\sqrt{x}\)的约数
那么\(O(\sqrt{x})\)暴力判断即可
但是n很大怎么办呢
(2)米勒拉宾素数判定:
首先要知道费马小定理
欧拉也一块证了吧
欧拉定理:若a,p互质那么\(a^{\phi(n)}=1(mod n) 费马小定理:若p为质数,那么\)a^(p-1)\equiv1(mod p)\((0<a<p)\)
证明欧拉:
设\(m_i=a*x_i\)那么m_i也与n互质
\(m_i=p*n+r\)
首先,r一定与n互质
若余数r与n不互质,那么\(d=gcd(r,n)\not=1\),\(m_i = d*c\)(c代表一个正整数),那么gcd(mi,n) != 1,与mi和n互质矛盾!
故\(m_i%n=r_i,r_i\)均与n互质
然后若\(m_i=m_j (mod n)\)
\(m_i-m_j=a*(x_i-x_j)(mod n)=0 (mod n) (i\not=j)\)
\(x_i\)和\(x_j\)均是小于n的正整数,故\(x_i=x_j\)时才能成立,则与\(i\not\)j矛盾
故\(m_i%n\)的余数均不相同,因为\(m_i\)的个数与n以内与n以内与n互质的数的个数相同,所以\(r_i\)就是\(x_i\)的一个不同的排列。
所以从1~n的mi的乘积与1~n的xi的乘积模n下同余,所以约掉相同的部分,\(a*a*a*a*........(\phi(n)个)=1(mod n )\) , 那么原式得证。
费马小定理就是n在为素数时的一个特例。得证
伪素数测试
Miller_Rabin
定理:
方法:
狄利克雷卷积:
对于数论函数f,g,定义其狄利克雷卷积为\((f*g)(n)=\sum_{d\midn}f(d)g(\frac{n}{d})\)
满足:
1 交换律\(f*g=g*f\)
2 结合律\((f*g)*h=f*(g*h)\)
3 分配率\(f*(g+h)=f*g+f*h\)
例题:
解:
莫比乌斯反演
莫比乌斯函数:
定义:
性质:
公式
公式证明
例题:
解: