菜鸟就要老老实实重新学起:
euler欧拉函数:
欧拉函数就是小于n的数中与n互质的数的数目。
用法经常比较神奇,数论嘛,还是看能不能想到用出来。
这里的模版参考挑战那本书的。
模版:
//直接求解欧拉函数
long long euler(long long n)
{
long long res=n,a=n;
for(long long i=2;i*i<=a;i++)
if(a%i==0)
{
res=res/i*(i-1);
while(a%i==0) a/=i;
}
if(a>1) res=res/a*(a-1);
return res;
}
//筛选法打欧拉函数表
long long eul[N];
void init()
{
eul[1]=1;
for(long long i=2;i<N;i++)
eul[i]=i;
for(long long i=2;i<N;i++)
if(eul[i]==i)
for(long long j=i;j<N;j+=i)
eul[j]=eul[j]/i*(i-1);
}