http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1136
设n为正整数,phi(n)表示不大于n并且不大于n并且与n互质的自然数个数,称phi(n)为欧拉函数
欧拉函数是积极性函数
n=p1*p2*p3*p4……*ps
phi(n)=n(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)……*(1-1/ps)
#include<stdio.h>
#include<math.h>
__int64 Phi(__int64 n)
{
__int64 i,k,m;
k=n;
m=sqrt(n);//这一定要有,这个优化很有必要
for(i=2;i<=m&&n>1;i++)
{ if(n%i==0)
{
k=k-k/i;
while(n%i==0)
n/=i;
}
}
if(n>1)//不要忘记它
k=k-k/n;
return k;
}
int main()
{
__int64 n;
scanf("%I64d",&n);
printf("%I64d\n",Phi(n));
}
欧拉函数在这里只是一个用了它的一个性质,它作为工具常出现在一些问题中