Cod sursa(job #134528)

Utilizator Anamaria20Cotirlea Anamaria Anamaria20 Data 11 februarie 2008 20:40:50
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include <stdio.h>

int n;
int contor;

int ftotient(int pn);

int main(void)
{

	FILE* f=fopen ("fractii.in","r");
	fscanf (f,"%d",&n);
	fclose (f);

	contor=0;

	for (int i=1;i<=n;i++)
	  contor+=ftotient(i);

	contor=contor+contor-1;

	f=fopen ("fractii.out","w");
	fprintf(f,"%d",contor);
	fclose (f);

	return 0;
}


int ftotient(int pn)
{
	int ln=pn;

	int totient=ln;
	int p1=1;
	int p2=1;
	for (int i=2;i<=ln;i++)
	{
		if (ln%i==0)
		{
			p1=p1*(i-1);
			p2=p2*i;
		}
		while (ln%i==0)
			ln=ln/i;
	}

	totient=(totient*p1)/p2;

	return totient;
 }