今天下午复习离散,看到了欧拉函数,以前在oj上有关欧拉函数的题,就好好的看了下,做了下题,理解了一下……
NY333题
基本上弄清了欧拉函数,用的是最原始的方法,没有什么技术含量,提交上去后时间用最多,排到了最后
# include<stdio.h>
int prim(long long x)
{
long long i;
int flag=0;
for(i=2;i*i<=x;i++)
{
if(x%i==0)
{
flag=1;
break;
}
}
if(flag==1)
return 0;
else
return 1;
}
int main()
{
long long n,i,a,b;
while(~scanf("%lld",&n))
{
a=n;
for(i=2;i*i<=a;i++)
{
if(a%i==0)
{
if(prim(i))
{
n=(n/i)*(i-1);
}
b=a/i;
if(prim(b)&&b!=i)
{
n=(n/b)*(b-1);
}
}
}
if(a!=1&&prim(a))
{
n=(n/a)*(a-1);
}
printf("%lld\n",n);
}
return 0;
}