zoukankan      html  css  js  c++  java
  • 欧拉函数

    欧拉函数

    定义:表示小于n且与n互质的正整数的个数
    (varphi (n)) 或者phi(n)表示
    通式:(varphi(x)=xprodlimits_{i=1}^{n}1-frac{1}{p_i}=xprodlimits_{i=1}^{n}frac{p_i-1}{p_i})
    (p_i)为x的所有质因数
    (varphi(1)=1)

    积性:if gcd(a,b)=1, (varphi(a,b)=varphi(a)varphi(b))

    证明:

    第k列可以表示为 (km+r),因为(gcd(km+r,m)=gcd(r,m)) 所以与m互质的列有(varphi(m))
    互质的列每行构成(mod ext{ }n)的剩余系,剩余系中与n互质的个数为(varphi(n))
    故与m,n互质的个数为行( imes)列,即(varphi(m) imesvarphi(n))

    小性质:(p|n,p^2|n,varphi(n)=varphi(n/p) imes p)

    证明:n,n/p有相同质因子令(prodlimits_{i=1}^{n}frac{p_i-1}{p_i}=A),(varphi(n)=n imes A ext{,}varphi(n/p)=n/p imes A)

    CODE1((sqrt{n})):

    int euler(int x){
     int ans=x;
     for(int p=2;p<=sqrt(x);++p){
           if(x%p==0){
           ans=ans/p*(p-1);
           while(x%p==0)x/=p;
           }
     }
     if(x>1)ans=ans/x*(x-1);
     return ans;
    }//根据通式
    

    CODE2(n)

    inline void euler(int n){
       for(int i=2;i<=n;++i){
        if(!v[i]){
         v[i]=i;
            p[++tot]=i;
            phi[i]=i-1;
          }
        for(int j=1;j<=tot;++j){
         if(p[j]>v[i]||p[j]*i>n)break;
         v[i*p[j]]=p[j];
         phi[i*p[j]]=phi[i]*(i%p[j]?p[j]-1:p[j]);//根据积性函数和小性质
          }
       }
    }
    
  • 相关阅读:
    sprint2第一天任务完成情况
    第七天完成任务
    第六天任务情况
    第五天任务完成情况
    第四天任务完成情况
    第三天任务完成情况
    第二天任务完成情况
    第一天任务完成情况
    组队开发项目NABCD分析
    网络设置-指定ip
  • 原文地址:https://www.cnblogs.com/ARTlover/p/9538404.html
Copyright © 2011-2022 走看看