• 404 页面不存在


    线性素数筛

    1 不管i是不是素数,它与素数的乘积一定不是素数,直接use =1;

    2 如果use=0那么i是素数加入到ss表中,然后枚举素数表,执行操作1,如果i是合数,如果素数表中有它的质因数,则说明已经被质因数筛过了,直接break即可。

    void pd()
    {
        use[1]=1;
        for(int i=2;i<=n;i++)
        {
            if(use[i]==0);
                a[++k]=i;
            for(int j=1;j<=k&&i*a[j]<=n;j++)
            {
                use[i*a[j]]=1;
                if(i%a[j]==0)
                    break; 
            }
        }
        return ;
    }

    线性求欧拉函数

    什么是欧拉函数,欧拉定理

    欧拉函数性质

    1:因为欧拉函数是积性函数,如果i与p互质则有 ph (i*p) =ph i *ph p i%p!=0

    2:ph i*p=ph i* p i%p==0不论p是不是质数

    这样就可以枚举出所有情况下的欧拉函数

    边线性筛边算欧拉函数:

    void get_phi()
    {
        for(int i=1;i<=N-3;i++)
            phi[i]=i;
        use[1]=1;
        for(int i=2;i<=N-3;i++)
        {
            if(use[i]==0)
            {
                ss[++k]=i;
                phi[i]=i-1;
            }
            for(int j=1;j<=k&&i*ss[j]<=N-3;j++)
            {
                int temp=i*ss[j];
                use[temp]=1;
                if(i%ss[j]==0)//i是ss的倍数 
                {
                    phi[temp]=phi[i]*ss[j];
                    break;
                }
                else
                {
                    phi[temp]=phi[i]*(ss[j]-1);
                }
            }    
        }
    }

    求单个的欧拉函数

    inline long long phi(long long x) 
    {
        long long s=x,i=2;
        for (;i*i<=x;i++) if (!(x%i)) {s=s/i*(i-1); for (;!(x%i);x/=i);}
        if (x>1) s=s/x*(x-1); return s;
    }

     gcd

    顺便贴一下gcd吧(虽然可以用__gcd(a,b)这个自带函数)

    long long gcd(long long a,long long b)
    {
        return b?gcd(b, a % b):a;
    }

  • 相关阅读:
    webstock学习
    H5存储
    js保留两位小数
    html5拖动滑块
    js判断网页访问设备类型
    关于hadoop setCombinerClass 与 setReducerClass同时使用存在的问题。
    hadoop 输出中文乱码问题
    mapreduce实现学生平均成绩
    mapreduce 实现数子排序
    hadoop mapreduce实现数据去重
  • 原文地址:https://www.cnblogs.com/cherrypill/p/12505490.html
Copyright © 2020-2023  润新知