Pagini recente » Cod sursa (job #2918442) | Cod sursa (job #2726931) | Cod sursa (job #2840846) | Cod sursa (job #2479478) | Cod sursa (job #981468)
Cod sursa(job #981468)
#include <stdio.h>
#include <math.h>
#define dim 100005
using namespace std;
int n,i,j,MAX,Mark[dim],v[dim],phi[dim],p,putere,rez;
void read()
{
FILE *f = fopen("sum.in","r");
fscanf(f,"%d",&n);
for( i = 1; i <= n; i++ )
{
fscanf(f,"%d",&v[i]);
if( v[i] > MAX )
MAX = v[i];
}
fclose(f);
}
void ciur()
{
for( i = 2; i <= sqrt(MAX); i++ )
if( Mark[i] == 0)
for( j = 2; (i*j) <= MAX; j++ )
Mark[i*j] = 1;
//Daca Mark[i] == 0, e prim.
}
void function_phi()
{
phi[1] = 1;
for( i = 2; i <= MAX; i++)
if( Mark[i] == 0 )
phi[i] = i-1;
else
{
p = i;
rez = 1;
for( j = 2; j <= i/2; j++)
{
putere = 1;
while(p % j == 0)
{
p /= j;
putere *= j;
}
if(putere != 1)
rez *= ((j-1)*(putere/j));
}
phi[i] = rez;
}
}
void write()
{
FILE *g = fopen("sum.out","w");
for( i = 1; i <= n; i++ )
fprintf( g,"%lld\n",(long long) (2 * phi[v[i]] * v[i]));
fclose(g);
}
int main()
{
read();
ciur();
function_phi();
write();
return 0;
}