Cod sursa(job #216465)

Utilizator Tase_CCapalna Tanase Tase_C Data 24 octombrie 2008 18:08:28
Problema Sum Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <fstream.h>
#include <iomanip.h>
#include <math.h>

long limit=100000;
long v[100001],a[100001],b[100001],p[100001],i,j,n;

long long x;
fstream fin("sum.in",ios::in),fout("sum.out",ios::out);
using namespace std;

int main(){
    for(i=2;i<=sqrt((float)limit);i++)
      if (p[i]==0)
        for (j=1;j<=limit/i;j++) p[i*j]=i;
    for (i=2;i<=limit;i++){
      if (p[i]==0) p[i]=i;
      b[i]=i/p[i]; a[i]=p[i];
      while (b[i]%p[i]==0){b[i]/=p[i]; a[i]*=p[i];}
      if(b[i]==1) v[i]=i-i/p[i];
      else v[i]=v[a[i]]*v[b[i]];
    }    
    fin>>n;
    for (i=1;i<=n;i++){
      fin>>x;
      fout<<2*x*v[x]<<"\n";   
    }    
    fin.close(); fout.close();
}