欧拉函数,欧拉筛
對一個正整數N,歐拉函數是小于N且與N互質的數的個數.。
φ(n) = n*(1-1/p1)*(1-1/p2)*......(1-1/pn)?? 其中(p1.....pn)為N的素因子
ll oula(ll n)///單個數求歐拉
{ll ans=n,a=n;for(int i=2;i*i<=a;i++){if(a%i==0){ans=ans/i*(i-1);while(a%i==0) a/=i;}}if(a>1) ans=ans/a*(a-1);return ans;
}
void init()///歐拉打表
{for(int i=0;i<maxn;i++)f[i]=i;for(int i=2;i<maxn;i++){if(f[i]==i){f[i]=f[i]/i*(i-1);///是素因子才往上更新for(int j=i+i;j<maxn;j+=i)f[j]=f[j]/i*(i-1);}}
}
性質如下:https://blog.csdn.net/w144215160044/article/details/51158735
總結
- 上一篇: poj 2449 Remmarguts'
- 下一篇: string 基本用法