-
求单个欧拉函数值
直接套用欧拉函数的普通表达式(唯一质因子分解)
ll euler(ll n)
{
ll ans=n;
for(ll i=2;i*i<=n;i++)
{
if(n%i==0)
{
ans=ans/i*(i-1);
while(n%i==0) n/=i;
}
}
if(n!=1) ans=ans/n*(n-1);
return ans;
}
-
求多个欧拉函数值
如果还按照求单个函数值的方法求的话肯定会超时
i.第一种方法要用到欧拉函数的两个性质:(这种方法我尽量理解去记(;´༎ຶД༎ຶ`),时间复杂度比第二种小)
- n%a==0 && (n/a)%a==0 则