来源: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;
}