Cod sursa(job #230388)

Utilizator mISHOOOmISHOOO mISHOOO Data 13 decembrie 2008 20:20:01
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.47 kb
#include <stdio.h>

FILE *fi = fopen("fractii.in", "r");
FILE *fo = fopen("fractii.out", "w");

unsigned long N, NF = 1;

unsigned int totient(unsigned long X) {
	long D = 2, P1 = 1, P2 = X;

	while (X>1) {
		if (X%D == 0) { P1*=(D-1); P2/=D; }
		while (X%D == 0) X/=D;
		D++;
	}

	return P1*P2;
}

int main() {
	fscanf(fi, "%uld", &N);
	
	for (int i=2; i<=N; i++) NF+=totient(i)*2;
	fprintf(fo, "%ld\n", NF);
	
	fclose(fi);
	fclose(fo);

	return 0;
}