Cod sursa(job #266565)

Utilizator mariusdeacuMarius Deacu mariusdeacu Data 25 februarie 2009 20:02:28
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <stdio.h>
int k;
int pnum[79000];
double totem[1000001];
double tot(int x)
{
	bool prim = true;
	double res = x;
	for (int i = 0; i < k; i++)
	{
		if (x % pnum[i] == 0)
		{
			prim = false;
			while (x % pnum[i] == 0)
			{
				x /= pnum[i];
			}
			res *= (1 - (double)1 / pnum[i]);
		}
	}
	if (prim)
	{
		pnum[k++] = x;
		res *= (1 - (double)1 / x);	
	}
	return res;
}
int main()
{
	int n;
	k = 0;
	FILE *in = fopen("fractii.in","rt");
	FILE *out = fopen("fractii.out","wt");
	fscanf(in, "%d", &n);
	fclose(in);
	double sum = 0;
	totem[1] = 1;
	for (int i = 2; i <= n; i++)
	{
		if (totem[i] == 0)
		{
			sum += (i * (1 - (double)1 / i)) / 1;
			for (int j = i * 2; j <= n; j += i)
			{
				if (totem[j] == 0)
					totem[j] = j;
				totem[j] *= (1 - (double)1 / i);
				totem[j] /= 1;
			}
		}
		else
			sum += totem[i];
	}
	fprintf(out, "%.0Lf", sum * 2 + 1);
	fclose(out);
	return 0;
}