Euler function_

//
欧拉函数 -> 小于n的数中 与n互质的个数

// 单个数的欧拉函数
LL euler( LL n )
{
    LL phi=n;
    for( LL i=2;i<=n/i;i++ )
    {
        if( n%i==0 )
        {
            phi-=phi/i;
            while( n%i==0 ) n/=i;
        }
    }
    if( n>1 ) phi-=phi/n;

    return phi;
}

// 欧拉函数打表
void euler( LL n )
{   
    for( int i=2;i<=n;i++ )
        if( phi[i]==0 )
            for( int j=i;j<=n;j+=i )
            {
                if( phi[j]==0 ) phi[j]=j;
                phi[j]-=phi[j]/i;
            }
}

Guess you like

Origin blog.csdn.net/qq_63173957/article/details/123939564