Cod sursa(job #115992)

Utilizator damaDamaschin Mihai dama Data 17 decembrie 2007 16:07:51
Problema Sum Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <stdio.h>
#include <string.h>


int main()
{
	freopen("sum.in", "r", stdin);
	freopen("sum.out", "w", stdout);

	int v[320], n, x, i, j, prime[67], cnt = 0, phi, temp;
	long long sol;
	
	memset(v, 0, sizeof(v));

	for(i = 2; i < 320; ++i)
	{
		if(v[i] == 0)
		{
			prime[++cnt] = i;
			for(j = 2 * i; j < 320; j += i)
			{
				v[j] = 1;
			}
		}
	}

	scanf("%d", &n);

	for(i = 1; i <= n; ++i)
	{
		scanf("%d", &x);
		temp = x;
		phi = x;
		for(j = 1; prime[j] * prime[j] <= x; ++j)
		{
			if(temp % prime[j] == 0)
			{
				phi /= prime[j];
				phi *= (prime[j] - 1);
				while(temp % prime[j] == 0)
				{
					temp /= prime[j];
				}
			}
		}
		if(temp != 1)
		{
			phi /= temp;
			phi *= (temp - 1);
		}
		phi *= 2;
		sol = (long long) phi * x;
		printf("%lld\n", sol);
	}

	return 0;
}