Cod sursa(job #378923)

Utilizator miculprogramatorA Cosmina - vechi miculprogramator Data 29 decembrie 2009 23:10:36
Problema Sum Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <stdio.h>

#define MAX 1000007

int  ciur[MAX],x;
int i, j, k, n;
int sum;

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

int main()
{
	FILE *f = fopen ("sum.in","r");
	FILE *g = fopen ("sum.out","w");
	fscanf (f,"%d", &n);
	
	/*for (i=1; i<=MAX; ++i)
		ciur[i] = 1;
	for (i=2; i*i<=MAX; ++i)
		if (ciur[i])
			for (j=2; i * j < MAX; ++j)
				ciur[i*j] = 0;*/
	
    for (i=1; i<=MAX; i++)
		ciur[i] = i-1;
    for (i=2; i<=MAX; i++)
      for (j=2*i; j<=MAX; j+=i)
		  ciur[j] -= ciur[i];  
	  
	for (i=0; i<n; ++i)
	{
		fscanf (f,"%d", &x);
		sum = ciur[x] * x * 2;
		fprintf (g,"%d\n", sum);
	}
	
	fclose(g);
	fclose(f);
	return 0;
}

/*for (i=0; i<n; ++i)
	{
		sum = 0;
		fscanf (f,"%d", &x);
		j = 1;
		while (j >= 0 && j <= 2 * x)
		{
			if (cmmdc(x, j) == 1)
				sum += j;
			j ++;
		}
		fprintf (g,"%d\n", sum);
	}*/