Cod sursa(job #2103577)

Utilizator NToniBoSSNicolae Tonitza NToniBoSS Data 10 ianuarie 2018 15:14:22
Problema Sum Scor 70
Compilator c Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <stdio.h>
#include <stdlib.h>
char ciur[100001];
int v[80001];
int main()
{
    int i,n,div,nr,x,xc,j;
    freopen("sum.in","r",stdin);
    freopen("sum.out","w",stdout);
    scanf("%d",&n);
    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++)
    {
        scanf("%d",&x);
        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("%d\n",nr*2*xc);
    }

    return 0;
}