Cod sursa(job #195820)

Utilizator andrei.ismailIsmail Andrei-Adnan andrei.ismail Data 22 iunie 2008 00:16:30
Problema Fractii Scor 30
Compilator c Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <stdio.h>

/* Return the number of coprime numbers < n. */
int coprimes(int n) {
	int result = 1, d = 2;
	while (n > 1) {
		int factor = 1;
		while (n % d == 0) {
			factor *= d;
			n /= d;
		}
		if (factor > 1) 
			result *= factor - factor / d;
		if (d != 2)
			d += 2;
		else
			d = 3;
	}
	return result;
}

int main(void) {
	FILE *fin, *fout;
	int n, i;
	long long result = 0;

	fin = fopen("fractii.in", "rt");
	fscanf(fin, "%d\n", &n);
	fclose(fin);

	result = 1;
	for (i = 2; i <= n; i++) {
		result += 2 * coprimes(i);
	}

	fout = fopen("fractii.out", "wt");
	fprintf(fout, "%lld\n", result);
	fclose(fout);
	return 0;
}