Cod sursa(job #512628)

Utilizator marta_diannaFII Filimon Marta Diana marta_dianna Data 14 decembrie 2010 09:05:04
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.54 kb
#include<fstream.h>

int a[1000001];
int n,i,nr;

int putere(int d, int x)
{
	int nr=1;
	while (x%d==0)
	{
		nr*=d;
		x/=d;
	}
	return nr;
}

int fi(int x)
{
	int d=2, p=1, aux=x;
	if (x%2==0) p=putere(2, x);
	else
	{
		d=3;
		while (p==1)
			if (x%d==0) p=putere(d, x);
			else d+=2;
	}
	return p/d*(d-1)*a[aux/p];
}

int main()
{
	ifstream f("fractii.in");
	ofstream g("fractii.out");
	f>>n;
	a[1]=1;
	for (i=2; i<=n; ++i)
		a[i]=fi(i);
	nr=1;
	for (i=2; i<=n; ++i) nr+=2*a[i];
	g<<nr<<"\n";
	f.close();
	g.close();
}