Cod sursa(job #2461698)

Utilizator GabyD002Dobrita Gabriel GabyD002 Data 25 septembrie 2019 23:10:15
Problema Sum Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <bits/stdc++.h>
#define NM 100003
using namespace std;
ifstream f("sum.in");
ofstream g("sum.out");

int phi[NM];
bool fr[NM];

void PHI();
void Read();

int main()
{   PHI();
    Read();
    f.close();
    g.close();
    return 0;
}

void Read()
{   int t;
    f>>t;
    for
    (   int x;
        f>>x;
        g<<1LL*phi[x]*2*x<<'\n'
    );
}

void PHI()
{   for(int i=2; i<NM; i++)
        phi[i]=1;
    for(int i=2; i<NM/2; i++)
        if(!fr[i])
            for(int j=2; i*j<NM; j++)
            {   fr[i*j]=true;
                int p=1;
                for(int aux=i*j; aux%i==0; aux/=i)
                    p*=i;
                p/=i;
                phi[i*j]*=(i-1)*(p);
            }
    for(int i=2; i<NM; i++)
        (phi[i]==1 ? phi[i]=i-1 : phi[i]=phi[i]);
}