欧拉函数

欧拉函数: 是少于或等于n的数中与n互质的数的数目

欧拉函数的值  通式:Euler(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn),其中p1, p2……pn为x的所有质因数,x是不为0的整数。Euler(1)=1(唯一和1互质的数(小于等于1)就是1本身)。 (注意:每种质因数只一个。比如12=2*2*3那么Euler(12)=12*(1-1/2)*(1-1/3)=4;

Eg :

Euler(12) = 4,与12互质的数有1 5 7 11,所以Euler(12) = 4

具体代码实现:

///欧拉公式的延伸:一个数的所有质因子之和是euler(n)*n/2
int Euler(int m)
{
    int ret = m;
    for(int i=2; i*i<=m; i++)
    {
        if(m%i == 0)
            ret -= ret/i;
        while(m%i == 0)
            m /= i;
    }
    if(m > 1)
        ret -= ret/m;
    return ret;
}


你可能感兴趣的:(欧拉函数)