欧拉函数

欧拉函数的简介与性质

  • 欧拉函数是少于或等于\(n\)的数中与\(n\)互质的数的数目。

  • 欧拉函数的性质:它在整数\(n\)上的值等于对n进行素因子分解后,所有的素数幂上的欧拉函数之积。

欧拉函数的值

  • 通式:\(\varphi(x)=x(1-\frac{1}{p_1})(1-\frac{1}{p_2})(1-\frac{1}{p_3})(1-\frac{1}{p_4})\dots(1-\frac{1}{p_n})\),其中\(p1, p2\dots pn\)\(x\)的所有质因数,\(x\)是不为\(0\)的整数。\(\varphi(1)=1\)(唯一和\(1\)互质的数(小于等 于1)就是1本身)。 (注意:每种质因数只一个。比如\(12=2*2*3\)那么\(φ(12)=12*(1-1/2)*(1-1/3)=4\)

推论:

  • \(n\)为奇数时,有\(\varphi(2n)=\varphi(n)。\)

  • 因为\(2\)和奇数互质,所以\(\varphi(2)*\varphi(n)=\varphi(2n)\),又因为\(\varphi(2)=1\),所以\(\varphi(n)=\varphi(2n)\)

  • \(n\)是质数\(p\)\(k\)次幂,\(φ(n)=p^k-p^{(k-1)}=(p-1)p^{(k-1)}\),因为除了\(p\)的倍数外,其他数都跟\(n\)互质。

  • \(n\)为正整数,以\(φ(n)\)表示不超过n且与n互素的正整数的个数,称为n的欧拉函数值,这里函数\(φ:N→N,n→φ(n)\)称为欧拉函数。

  • 欧拉函数是积性函数——若\(m,n\)互质,\(φ(mn)=φ(m)φ(n)\)

特殊性质:

  • \(n\)为奇数时,\(φ(2n)=φ(n)\), 证明与上述类似。

算法实现

用通式直接求:

int Euler(int n)   //1.直接求欧拉函数的值
{
    int rea=n;
    for(int i=2; i*i<=n; i++)
        if(n%i==0)//第一次找到的必为素因子
        {
            rea=rea-rea/i;
           while(n%i==0){
                n=n/i;//把该素因子全部约掉
            }
        }
    if(n>1)
        rea=rea-rea/n;
    return rea;
}

素数表实现


bool boo[50000];
int p[20000];
void prim()
{
    memset(boo,0,sizeof(boo));
    boo[0]=boo[1]=1;
    int k=0;
    for(int i=2; i<50000; i++)
    {
        if(!boo[i])
            p[k++]=i;
        for(int j=0; j<k&&i*p[j]<50000; j++)
        {
           // cout<<i*p[j]<<endl;
            boo[i*p[j]]=1;
                if(!(i%p[j]))
                break;
        }
}
}//筛选法打表
 
int phi(int n)
{
    int rea=n;
    for(int i=0; p[i]*p[i]<=n; i++)//对于一些不是素数的可不遍历
        if(n%p[i]==0)
        {
            rea=rea-rea/p[i];
 
            while(n%p[i]==0){
                n=n/p[i];
            }
        }
    if(n>1)
        rea=rea-rea/n;
    return rea;
}

递推求欧拉函数

int pp[20000];
for(int i=1; i<=maxn; i++)
    pp[i]=i;
for(int i=2; i<=maxn; i+=2)
    pp[i]/=2;
for(int i=3; i<=maxn; i+=2)
    if(pp[i]==i)
        for(int j=i; j<=maxn; j+=i)
            pp[j]=pp[j]/i*(i-1);
posted @ 2020-08-02 13:38  hulean  阅读(387)  评论(0编辑  收藏  举报