2016夏季练习——数论

来源:互联网 发布:学编程可以做什么 编辑:程序博客网 时间:2024/04/29 12:29

来源:POJ3090

直接就是求欧拉函数

直接上代码:

#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int MAXN = 1010;long long p[MAXN+10];void ini(){memset(p,0,sizeof(p));p[1]=1;for(int i=2;i<MAXN;i++){if(!p[i]){for(int j=i;j<MAXN;j+=i){if(!p[j])p[j]=j;p[j]=p[j]/i*(i-1);}}}}int main(){ini();int T,nc=1;scanf("%d",&T);while(T--){int n;scanf("%d",&n);int sum=3;for(int i=2;i<=n;i++)sum+=2*p[i];cout<<nc++<<" "<<n<<" "<<sum<<endl;}return 0;}


1 0