您的位置:首页 > 其它

HDU 1787 欧拉函数模板

2013-01-22 20:52 323 查看
这题求gcd(m,n)>1的个数,用N-1-e(n)就行了

#include<stdio.h>
#include<math.h>
#define maxn 100000010
int euler(int x)//求 一个数的欧拉函数,安装定义求
{
    int i,res=x;
    for(i=2;i<(int)sqrt(x*1.0)+1;i++)
    {
        if(x%i==0)//从2开始,2是质数
        {
            res=res/i*(i-1);
            while(x%i==0)//把是2的因子都去掉
            x/=i;
        }
    }
    if(x>1)//最后一定是个大质数
    res=res/x*(x-1);
    return res;
}

int main()
{
    int n;
    while(scanf("%d",&n)==1&&n)
    {
        printf("%d\n",n-1-euler(n));
    }
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: