以下为本人在学习数论过程中看见好的解释而拉来存放:
欧拉函数详解
对一个正整数N,欧拉函数是小于N且与N互质的数的个数.。
例如φ(24)=8,因为1, 5, 7, 11, 13, 17, 19, 23均和 24 互质。
φ(n) = n*(1-1/p1)*(1-1/p2)*......(1-1/pn) 其中(p1.....pn)为N的素因子
欧拉函数的基本性质:
① N是不为0的整数。φ(1)=1(唯一和1互质的数就是1本身)
② 除了N=2,φ(N)都是偶数.
③ 小于N且与N互质的所有数的和是φ(n)*n/2。
④ 欧拉函数是积性函数——若m,n互质,φ(m*n)=φ(m)*φ(n)。
⑤ 当N为奇数时,φ(2*N)=φ(N)
⑥ 若N是质数p的k次幂,φ(N)=p^k-p^(k-1)=(p-1)p^(k-1),因为除了p的倍数外,其他数都跟N互质。
⑦ 当N是质数时,φ(N) = N-1
欧拉函数线性打表法:
void Init ()
{
int i, j;
for (i=0; i<N; i++)
oula[i] = i;
oula[1] = 1;
for (i=2; i<N; i++)
{
if (oula[i] == i)
{
oula[i] = oula[i] / i * (i - 1);
for (j=i+i; j<N; j+=i)
oula[j] = oula[j] / i * (i - 1);
}
}
}