Cod sursa(job #129395)

Utilizator damaDamaschin Mihai dama Data 29 ianuarie 2008 11:56:55
Problema Sum Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <stdio.h>

int v[100001], phi[100001];

int main()
{
    freopen("sum.in", "r", stdin);
    freopen("sum.out", "w", stdout);

    int i, j, n, x;
    long long sol;

    for(i = 2; i <= 100000; ++i)
    {
        if(v[i] == 0)
        {
            phi[i] = i - 1;
            for(j = 2 * i; j <= 100000; j += i)
            {
                v[j] = i;
            }
        }
        else
        {
            if((i / v[i]) % v[i] == 0)
            {
                phi[i] = phi[i / v[i]] * v[i];
            }
            else
            {
                phi[i] = phi[i / v[i]] * (v[i] - 1);
            }
        }
    }
    scanf("%d", &n);
    for(i = 1; i <= n; ++i)
    {
        scanf("%d", &x);
        sol = 2 * (long long) x * phi[x];
        printf("%lld\n", sol);
    }

    return 0;
}