欧拉函数(Euler’s totient function、φ函数、欧拉商数)定义:在数论中,对正整数n,欧拉函数是小于等于n的数中与n互质的数的数目。
通式: φ(N)=N*(1-1/P1)(1-1/P2)…*(1-1/Pn).
(其中x为非零整数,p1,p1…pn为对于一个正整数N的素数幂分解N=P1^q1*P2^q2*…*Pn^qn. )性质:
- 欧拉函数是积性函数——若m,n互质, φ(mn)=φ(n)*φ(m)
- 当n为奇数时,φ(2n)=φ(n)
- 当n为质数,φ(n)=n-1
欧拉定理: 若a与n互质,则a×φ(n) ≡ 1 (mod n)
欧拉定理的推广形式:当x ≥ φ(n)时,a×X ≡ a×( X mod φ(n) + φ(n) ) (mod n),不需要互素。
用途:计算高阶幂次取模代码:
int eular(int x)
{
int i,res = x;
for(i = 2;i < (int)sqrt(x*1.0) + 1;i++)
{
if(x % i == 0)
{
res = res / i * (i-1);
while(x % i == 0)
x /= i;
}
}
if(x > 1)
res = res/x *(x-1);
return res;
}