欧拉函数

来源:互联网 发布:空燃比传感器数据分析 编辑:程序博客网 时间:2024/06/06 09:46

欧拉函数:求与数 n 相质 的数的个数

void init(){     for(ll i=1;i<max;i++){        num[i] = i;     }     for(ll i=2;i<max;i++)        if(num[i]==i)          for(ll j=i;j<max;j+=i)            num[j] = num[j]/i*(i-1);}

链接

#include<iostream>#include<cstdio>#include<cstring>#include<cmath>using namespace std;#define max 1005000typedef  long long ll;ll num[max];void init(){     for(ll i=1;i<max;i++){        num[i] = i;     }     for(ll i=2;i<max;i++)        if(num[i]==i)          for(ll j=i;j<max;j+=i)            num[j] = num[j]/i*(i-1);}int  main(){    ll n,t;    init();    while(scanf("%lld",&n)!=EOF){        if(n==0) break ;        t = 0;        for(ll i=2;i<=n;i++){              t += num[i];        }       printf("%lld\n",t);    }    return 0;}

原创粉丝点击