内容
证明
首先证明下面这个命题:
对于集合Zn={x1,x2,...,xφ(n)},其中xi(i=1,2,…φ(n))是不大于n且与n互素的数,即n的一个化简剩余系(或称简系、缩系),考虑集合S = {a*x1(mod n),a*x2(mod n),...,a*xφ(n)(mod n)} 。
则S = Zn
1) 由于a,n互质,xi也与n互质,则a*xi也一定与n互质,因此
任意xi,a*xi(mod n) 必然是Zn的一个元素 。
2) 对于Zn中两个元素xi和xj,如果xi ≠ xj
则a*xi(mod n) ≠ a*xj(mod n),这个由a、n互质和消去律可以得出。
所以,很明显,S=Zn
既然这样,那么
(a*x1 × a*x2×...×a*xφ(n))(mod n)
= (a*x1(mod n) × a*x2(mod n) × ... × a*xφ(n)(mod n))(mod n)
= (x1 × x2 × ... × xφ(n))(mod n)
考虑上面等式左边和右边
左边等于([a^φ(n)] *(x1 × x2 × ... × xφ(n))) (mod n)
右边等于x1 × x2 × ... × xφ(n))(mod n)
而x1 × x2 × ... × xφ(n)(mod n)和n互质
根据消去律,可以从等式两边约去,就得到:
a^φ(n) ≡ 1 (mod n)
推论:对于互质的数a、n,满足a^(φ(n)+1) ≡ a (mod n)
费马定理:
证明这个定理非常简单,由于φ(p) = p-1,代入欧拉定理即可证明。推论:对于任意正整数a,有a^p ≡ a (mod p),因为a能被p整除时结论显然成立。
附上求欧拉函数的代码:
int phi(int n)
{
int res=1;
for(int i=2;i*i<=n;i++)
if(n%i==0)
{
n/=i;res*=i-1;
while(n%i==0)
{
n/=i;res*=i;
}
}
if(n>1) res*=n-1;
return res;
}