您的位置:首页 > 其它

欧拉函数——找新朋友(HDU 1286)

2016-07-13 10:05 225 查看
欧拉函数(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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息