Cod sursa(job #819064)

Utilizator smaraldaSmaranda Dinu smaralda Data 18 noiembrie 2012 14:55:43
Problema Sum Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<stdio.h>
#include<math.h>
int phi (int x)
{
	int lim,e,d,rez;
	lim=sqrt(x);
	rez=x;
	d=2;
	while(x>1 && d<=lim)
		{
			e=0;
			while(x%d==0)
				{
					x/=d;
					e++;
				}
			if(e)
				rez=rez/d*(d-1);
			d++;
		}
	if(x>1)
		rez=rez/x*(x-1);
	return rez;
}

int cmmdc(int a, int b)
{
	int r;
	while(b)
		{
			r=a%b;
			a=b;
			b=r;
		}
	return a;
}

int main()
{
	freopen("sum.in","r",stdin);
	freopen("sum.out","w",stdout);
	int n,t,i,j,k,x,aux,dc,rez;
	scanf("%d",&t);
	for(k=1;k<=t;k++)
		{
			scanf("%d",&x);
			rez=phi(2*x)*x;
			if(x%2==1)
				{
					aux=(2*x-2)/2;
					rez+=aux*(aux+1);
				}
			printf("%d\n",rez);
		}			
	return 0;
}