欧拉定理:
若正整数 a , n 互质,则 aφ(n)≡1(mod n) 其中 φ(n) 是欧拉函数(1~n) 与 n 互质的数。
证明如下:
不妨设X1,X2 ...... Xφn是1~n与n互质的数。
首先我们先来考虑一些数:aX1,aX2 ...... aXφn
这些数有如下两个性质:
(1)任意两个数模n余数一定不同:(反证)
若存在aX1≡aX2(mod n),则 n |( aX1 - aX2 ),
而a,n互质且(X1 - X2)< n,所以n不可能整除( aX1 - aX2 ),也就是说不存在aX1≡aX2(mod n)。
归纳法:对于任意的与n互质的Xi均成立。故得证。
那么因为有 φn 个这样的数,Xi mod n(i=1~φn)所以就有 φn 个不同的余数,并且都是模数自然是(0~n-1)。
(2)对于任意的aXi(mod n)都与n互质。
这不难想,因为a与n互质这是欧拉函数的条件,Xi是(1~n)与n互质的数的集合中的元素。
所以如果 a*Xi 做为分子,n做为分母,那么
他们构成的显然就是一个最简分数,也就是aXi和n互质。
接下来就可以用欧几里得算法:
因为:gcd(aXi,n)==1
所以:gcd(aXi,n)== gcd(n,aXi%n)== 1
切入正题
这样,我们把上面两个性质结合一下来说,aX1(mod n),aX2(mod n) ...... aXφn(mod n)构成了一个集合(性质1证明了所有元素的互异性),并且这些数是1~n与n互质的所有数构成的集合(性质1已说明)。
这样,我们巧妙的发现了,集合{ aX1(mod n),aX2(mod n) ...... aXφn(mod n)}
经过一定的排序后和集合{ X1,X2 ...... Xφn }
完全 一 一 对应。
那么:aX1(mod n)* aX2(mod n)* ...... * aXφn(mod n)= X1 * X2 * ...... * Xφn
因此:我们可以写出以下式子:
aX1 * aX2 * ...... * aXφn ≡ X1 * X2 * ...... * Xφn (mod n),即:(aφn -1)X1 * X2 * ...... * Xφn ≡ 0 (mod n)
又因为X1 * X2 * ...... * Xφn与n互质,所以, (aφn -1)| n,那么aφn ≡ 1(mod n)。
欧拉定理得证。
欧拉定理的推论:
若正整数a,n互质,那么对于任意正整数b,有ab≡ab mod φ(n)(mod n)
证明如下:(类似费马小定理的证明)
把目标式做一简单变形:ab - b mod φ(n)* ab mod φ(n)≡ ab mod φ(n)(mod n),
所以接下来只需要证明 ab - b mod φ(n)≡ 1 (mod n),
又因为:( b - b mod φ(n))| φ(n),
不妨设:( b - b mod φ(n))= q*φ(n)(q为自然数),
则有aq*φ(n)== (aq)φ(n),
因为a,n互质,那么(aq)与n也互质,
那么就转换到了欧拉定理:(aq)φ(n)≡ 1 (mod n),成立。
所以我们这个推论成立。
不过,这个推论能干嘛呢???
这个推论可以帮助我们在求幂运算的时候缩小数据范围和计算次数。
具体的说:在求乘方运算时,可以先把底数对mod取模,再把指数对b mod φ(n)取模。
特别的,如果a,mod不互质,且b>φ(n)时,ab ≡ ab mod φ(n)+ φ(n)(mod n)。