线性筛欧拉函数
Posted water-radish
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线性筛欧拉函数相关的知识,希望对你有一定的参考价值。
#include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<algorithm> #define ll long long using namespace std; ll n,jdg[1000001],prime[1000001],phi[1000001],cnt,ans; int main() { scanf("%lld",&n); phi[1]=1;jdg[1]=1; for(ll i=2;i<=n;i++) { if(!jdg[i]) { prime[++cnt]=i; phi[i]=i-1; } for(ll j=1;j<=cnt;j++) { if(i*prime[j]>n) break; jdg[i*prime[j]]=1; if(i%prime[j]==0) { phi[i*prime[j]]=phi[i]*prime[j]; break; } phi[i*prime[j]]=phi[i]*(prime[j]-1); } } }
以上是关于线性筛欧拉函数的主要内容,如果未能解决你的问题,请参考以下文章