标签:一个 line 公式 for 函数 条件 欧拉函数 因子 ret
一个trick是for循环的条件不断改变,同时保证最多只有一个n的素因子不会被for遍历到。这样大大降低了复杂度(\(O(\sqrt{n})\))。
int phi(int n)
{
int ret=n;
for(int i=2;i<int(sqrt(n))+1;++i)
{
if(n%i==0)ret=ret/i*(i-1);
while(n%i==0)n/=i;
}
if(n>1)ret=ret/n*(n-1);
return ret;
}
--最后修改于:2018/08/28--
标签:一个 line 公式 for 函数 条件 欧拉函数 因子 ret
原文地址:https://www.cnblogs.com/maoruimas/p/9551383.html