欧拉函数及其相关

来源:互联网 发布:iplaysoft mac重装 编辑:程序博客网 时间:2024/05/03 08:35

求指定数值的欧拉算法:

    static int euler(int n)    {        int res=n,a=n;        for(int i=2;i*i<=a;i++)        {            if(a%i==0)            {                res=res/i*(i-1);                while(a%i==0)                    a/=i;            }        }        if(a>1)            res=res/a*(a-1);        return res;    }

求1到n的区域内所有的欧拉函数值(筛法):

    static int euler[]=new int[10000];    static void euler(int n)    {        euler[1]=1;        for(int i=2;i<n;i++)            euler[i]=i;        for(int i=2;i<n;i++)            if(euler[i]==i)                for(int j=i;j<n;j+=i)                    euler[j]=euler[j]/i*(i-1);    }

相关题目
HDOJ2588
POJ2480
HODJ 3501

0 0
原创粉丝点击