欧拉函数求个数

时间复杂度 O(sqrt(n))

ll eular(ll n){
    ll ret=1,i;
    for (i=2;i*i<=n;i++)
        if (n%i==0){
            n/=i,ret*=i-1;
            while (n%i==0)
                n/=i,ret*=i;
        }
    if (n>1)
        ret*=n-1;
    return ret;
}
View Code

相关文章: