Cod sursa(job #1875696)

Utilizator mircearoataMircea Roata Palade mircearoata Data 11 februarie 2017 14:18:15
Problema Sum Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
#include <cstdio>

using namespace std;

//ifstream in("sum.in");
//ofstream out("sum.out");

int n,maxx;
long long euler[100001];
int v[100001];

int main()
{
    freopen("sum.in", "rt", stdin);
    freopen("sum.out", "wt", stdout);
    scanf("%d", &n);
    for(int i = 1; i<=n; i++)
    {
        scanf("%d", &v[i]);
        maxx=max(maxx,v[i]);
    }
    for(int i = 1;i<=maxx;i++)
        euler[i]=i;
    for(int i = 2; i<=maxx; i++)
    {
        if(euler[i]==i)
        {
            for(int j = i; j<=maxx; j+=i)
            {
                euler[j]/=i;
                euler[j]*=(i-1);
            }
        }
    }
    for(int i = 1; i<=n; i++)
    {
        printf("%lld\n", v[i]*2*euler[v[i]]);
    }
    return 0;
}