Cod sursa(job #472068)

Utilizator marius.bucurBucur Marius - Ovidiu marius.bucur Data 22 iulie 2010 20:16:10
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include<cstdio>
#include<cstdlib>
#include<iostream>

int totient(int N)
{
	int sum = N;
	for(int i = 2; i*i <= N ; i = i += 2)
	{
		if(N % i == 0)
		{
			sum -= sum/i;
			while(N % i == 0)
				N /= i;
		}
	}
	if( N != 1)
		sum -= sum/N;
	return sum;
}

int main()
{
	FILE* f = fopen("fractii.in", "r");
	FILE* g = fopen("fractii.out", "w");

	int N;
	fscanf(f, "%d", &N);

	unsigned long long total = 0;

	for(int i = 2; i <= N; i++)
	{
		//printf("[totient %d %d]\n", i, totient(i));
		total += totient(i);
	}

	total *= 2;
	total++;

	fprintf(g, "%llu\n", total);

	fclose(f);
	fclose(g);
}