BIT1049 Relatives

给一个n,当n为0时停止输入

赤裸裸地求欧拉函数值。。。。。

#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
long long euler(long long n)//求n的欧拉函数  
{  
    long long ans=1,i;  
    for(i=2;i*i<=n;i++)  
        if (n%i==0)  
        {  
            ans*=i-1; n/=i;  
            while(n%i==0)  
            { ans*=i; n/=i; }  
        }  
    if (n>1) ans*=n-1;  
    return ans;  
} 
int main()
{
	long long n;
	while(scanf("%lld",&n),n)
	{
		printf("%lld\n",euler(n));
	}
	return 0;
}


你可能感兴趣的:(BIT1049 Relatives)