Cod sursa(job #1448882)

Utilizator Darius15Darius Pop Darius15 Data 8 iunie 2015 09:19:58
Problema Sum Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
#include <bitset>
using namespace std;
ifstream f("sum.in");
ofstream g("sum.out");
int a[10000],l,i,j,nr,n,x,vd,phi[100001];
int c,d;
bitset <100001> viz;
int main()
{
  a[l=1]=2;
    for (i=3;i<=1000;i+=2)
      if (viz[i]==false)
    {
      a[++l]=i;
      j=i*i;
      if (j/i==i)
        for (j=i*i;j<=1000;j+=i)
        viz[j]=true;
    }
   for (i=2;i<=100000;i++)
   {
     vd=i;nr=1;
     for (j=1;a[j]*a[j]<=i;j++)
     {
         if (vd%a[j]==0)
         {
           nr*=(a[j]-1);
           vd/=a[j];
           while(vd%a[j]==0)
            nr*=a[j],vd/=a[j];
         }
     }
     if (vd>1) nr*=(vd-1);
    phi[i]=nr;
   }
   f>>n;
   for (i=1;i<=n;i++)
   {
     f>>x;
     c=2*phi[x];
     d=x;
     c*=d;
     g<<c<<'\n';
   }
    return 0;
}