求解欧拉函数个数

 直接求解代码如下:

public static int eular(int n){
        int 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;
    }

打表代码如下static int maxn=1000007;
    static int p[]=new int[maxn];
    public static void phi()
    {
      
        p[1]=1;
        for(int i=2;i<maxn;i++)
        {
            if(p[i]==0)
                for(int j=i;j<=maxn;j+=i)
                {
                    if(p[j]==-0)p[j]=j;
                    p[j]=p[j]/i*(i-1);
                }
        }
    }:

发布了40 篇原创文章 · 获赞 24 · 访问量 1790

猜你喜欢

转载自blog.csdn.net/qq_40807366/article/details/86688337