Cod sursa(job #2596)

Utilizator Matei_frodoMatei Cristescu Matei_frodo Data 17 decembrie 2006 23:14:13
Problema Fractii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <cstdio>

const int MAXN = 1024000;
int phi[MAXN], not_prime[MAXN];

int main()
{
	freopen("fractii.in", "rt", stdin);
	freopen("fractii.out", "wt", stdout);

	int N;
	scanf("%d", &N);

	for (int i = 2; i <= N; ++i)
		phi[i] = i;

	long long res = 0;

	for (int i = 2; i <= N; ++i)
	{
		// daca i este prim
		if (!not_prime[i])
		{
			// pentru toate numerele j care il au ca factor prim pe i,
			// reactualizam functia phi(j)
			for (int j = i; j <= N; j += i)
			{
				not_prime[j] = 1;
				phi[j] /= i;
				phi[j] *= i-1;
			}
		}

		res += phi[i];
	}

	printf("%lld\n", 1 + (res << 1));

	return 0;
}