Cod sursa(job #1178556)

Utilizator cipriancxFMI - gr143 Timofte Ciprian cipriancx Data 26 aprilie 2014 21:43:19
Problema Sum Scor 35
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <cstdio>


int fi(int n);
void creazaciur();



using namespace std;


int ciur[100001];
int prime[100001];
int nrprime;
int n,x;
int main()
{
    freopen("sum.in","r",stdin);
    freopen("sum.out","w",stdout);

creazaciur();

cin>>n;
for(int i=1; i<=n; i++)
{
    cin>>x;
    printf("%ld \n",2*x*fi(x));
}
    return 0;
}


int fi(int n){
    int prod=1;
for(int i=1; i<=nrprime; i++)
{
    int p=prime[i];
    if(n%p==0){
        int exp=1;
        int aux=p;
        while(n%(aux*p)==0){ exp++; aux*=p;}
    prod=prod*(p-1)*(aux/p);
        }
}

return prod;
}

void creazaciur(){

for(int i=2; i<=100000; i++)
    if(!ciur[i]){   ciur[i]=1;
                    nrprime++;
                    prime[nrprime]=i;
                    for(int j=i; j<=100000; j+=i)ciur[j]=1;

                    }
}