HDU 1286 找新朋友

题解:分析题目,就是一个裸的欧拉函数,于是AC。

#include <cstdio>

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;

}

int main(){

    int n;

    scanf("%d",&n);

    while (scanf("%d",&n)!=EOF) printf("%d\n",eular(n));

    return 0;   

}

你可能感兴趣的:(HDU)