Cod sursa(job #2103589)

Utilizator NToniBoSSNicolae Tonitza NToniBoSS Data 10 ianuarie 2018 15:17:44
Problema Sum Scor 90
Compilator c Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
char ciur[100001];
int v[80001];
int G()
{
    int nr=0;
    char c=getchar();
    while(!isdigit(c))
        c=getchar();
    while(isdigit(c))
    {
        nr=nr*10+c-'0';
        c=getchar();
    }
    return nr;
}
int main()
{
    int i,n,div,nr,x,xc,j;
    freopen("sum.in","r",stdin);
    freopen("sum.out","w",stdout);
    n=G();
    for(i=2; i*i<=100000; i++)
        if(ciur[i]==0)
            for(j=i*i; j<=100000; j+=i)
                ciur[j]=1;
    nr=0;
    for(i=2; i<=100000; i++)
        if(!ciur[i])
            v[++nr]=i;
    for(i=1; i<=n; i++)
    {
        x=G();
        xc=x;
        nr=1;
        div=1;
        while(v[div]*v[div]<=x)
        {
            if(!(x%v[div]))
            {
                while(!(x%v[div]))
                {
                    nr*=v[div];
                    x/=v[div];
                }
                nr/=v[div];
                nr*=(v[div]-1);
            }
            div++;
        }
        if(x-1)
            nr*=(x-1);
        printf("%lld\n",(long long)nr*2*xc);
    }

    return 0;
}