Cod sursa(job #216387)

Utilizator AndreyPAndrei Poenaru AndreyP Data 24 octombrie 2008 12:17:32
Problema Sum Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<stdio.h>
#define M 100001
int N;
long long x;
int e[M+9];
void euler()
{
	int i,j;
	for(i=3; i<M; i+=2)
		e[i]=i;
	e[2]=1;
	for(i=4; i<M; i+=2)
		e[i]=i>>1;
	for(i=3; i<M; i+=2)
	{
		if(e[i]==i)
		{
			e[i]--;
			for(j=i<<1; j<M; j+=i)
				e[j]=e[j]/i*(i-1);
		}
	}
}
long long afla(int j,int i)
{
	int r=1;
	while(j%i==0)
	{
		j/=i;
		r*=i;
	}
	r*=i;
	long long r1=(long long)r;
	return r1;
}
void rezolva()
{
	scanf("%lld",&x);
	long long aux=(long long)e[x];
	printf("%lld\n",2*aux*x);
}
int main()
{
	freopen("sum.in","r",stdin);
	freopen("sum.out","w",stdout);
	scanf("%d",&N);
	euler();
	for(; N; N--)
		rezolva();
	return 0;
}