POJ-2478 欧拉函数

来源:互联网 发布:淘宝店家不发货 编辑:程序博客网 时间:2024/05/22 13:11


#include<cstdio>#include<iostream>using namespace std;typedef unsigned long long ll;const int maxn = 1e6+5;ll el[maxn];void euler(){for(int i=1;i<maxn;i++)el[i]= i;for(int i=2;i<maxn;i++)if(el[i]==i){for(int j=i;j<maxn;j+=i)el[j] = el[j]*(i-1)/i; //根据欧拉函数计算公式 把每个以素数i为因子的所有数化简 没有被化简的就是素数}}int main(){euler();int n;while(scanf("%d",&n),n){ll sum=0;for(int i=2;i<=n;i++)sum+=el[i];printf("%lld\n",sum);}return 0;}// 第一发wa 后来把el 改成ll就过了