数论基础知识

欧拉函数

定义:φ(x)为1至x中与x互质的数的个数.

φ(x)=x*∏(p为x的所有质因子)(1-1/p)

简单说明一下,这其实是利用了容斥原理.假设x只有两个不同的质因子p,q,1至x中p的倍数有x/p个,q的倍数有x/q个,把这些数去掉之后,我们也许会重复去掉一些小于x既是p的倍数又是q的倍数的数,这时候就得加回来,于是有φ(x)=x-x/p-x/q+x/p*q.化简一下,可以得到φ(x)=x(1-1/p-1/q+1/p*q)=x(1-1/p)(1-1/q).同理对于多个质因子的也可以利用容斥原理计算,最后化简后的式子即为所给公式.

欧拉定理

若a,p互质,则aφ(p)≡1(modp).

证明之前先补充一下关于mod的一些定义性质.

同余类 设0<=a<m,(a+k*m)对m同余,称集合{a+k*m}为一个模m的同余类.

完全剩余系 m的所有同余类构成的集合成为m的完全剩余系{0,1,2,3...m-1}.

简化剩余系 1至m中与m互质的数代表的同余类构成的集合成为简化剩余系,它们有φ(m)个.例如8的简化剩余系为{1,3,5,7}.

简化剩余系的性质:关于模m乘法封闭 如果a和b均与m互质,则a*b也与m互质,因为a,b和m都没有公共质因子,因此a*b和m也没有公共质因子,由gcd(a*b,m)=gcd(m,a*b%m)可知,a*b%m也与m互质,因此a*b也在m的简化剩余系中.

证明:

设bi为1到p中与p互质的第i个数,考虑a*bi≡a*bj(modp),a(bi-bj)≡0(modp),因为a与p互质,所以bi-bj=0,bi=bj,也就是只有bi=bj时a*bi≡a*bj(modp)才能成立.

综上所述,{b1,b2,b3....bφ(p)}构成一个简化剩余系,a与p互质,因此a也属于简化剩余系,由于简化剩余系对乘法封闭,且只有bi=bj时,才有a*bi≡a*bj(modp),而bi各不相同,因此{a*b1,a*b2,a*b3...a*bφ(p)}也同样构成简化剩余系,因此有(a*b1)(a*b2)...(a*bφ(p))=b1*b2...*bφ(p)(modp),bi均与p互质,化简一下即可得到aφ(p)≡1(modp).

费马小定理

若p为质数,对于任意整数有ap≡a(modp).

证明:

由欧拉定理可知若p为质数,φ(p)=p-1,对于所有整数a,a不是p的倍数,即a与p互质,有ap-1≡1(modp),而当a为p的倍数的时候,ap≡a(modp)显然成立.

逆元

定义:对于整数a,若存在a*b≡1(modp),则称b为a关于模p的逆元.

作用:若a*b≡1(modp),则b可以看作是(1/a)%p,当要执行除法取模操作的时候,例如(c/a)%p,则可以写成c*b%p.

求法:当a和p互质时,由欧拉定理知aφ(p)≡1(modp),a*aφ(p)-1≡1(modp),因此a关于模p的逆元(a*)=aφ(p)-1,特别的当p为质数时,(a*)=ap-2.

猜你喜欢

转载自www.cnblogs.com/VBEL/p/11421015.html