欧拉函数

来源:互联网 发布:手机淘宝1元购在哪里 编辑:程序博客网 时间:2024/05/18 16:36
#include"string"#include"sstream"#include"iostream"#include"stack"using namespace std;const int maxn=100000;int minDiv[maxn],phi[maxn],sum[maxn];int n;void genPhi(){for(int i=1;i<maxn;++i)   minDiv[i]=i;for(int i=2;i*i<maxn;++i)if(minDiv[i]==i)for(int j=i*i;j<maxn;j+=i)minDiv[j]=i;phi[1]=1;for(int i=2;i<maxn;++i){phi[i]=phi[i/minDiv[i]];if((i/minDiv[i])%minDiv[i]==0)phi[i]*=minDiv[i];elsephi[i]*=minDiv[i]-1;}}int main(){genPhi();while(cin>>n){cout<<phi[n]<<endl;}return 0;}

0 0