poj 2407 Relatives(欧拉函数模板题)

#include <iostream>
using namespace std;
int Euler(int n)
{
    int res = n,i;

    for(i=2; i * i <= n; i++)
        if(n%i == 0)
        {
            n /=i ;
            res = res - res/i;
            while(n % i ==0)
                n/=i;
        }

    if (n > 1)
        res = res - res/n;
    return res;
}
int main()
{
    int n;
    while(cin>>n)
    {
        if(n==0) break;
        if(n==1) cout<<"0"<<endl;
        else
            cout<<Euler(n)<<endl;
    }
    return 0;
}

你可能感兴趣的:(poj 2407 Relatives(欧拉函数模板题))