Cod sursa(job #512638)

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

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

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

long long fi(long long x)
{
	long long d=2, p=1, aux=x;
	if (x%2==0) p=putere(2, x);
	else
	{
		d=3;
		while (p==1 && d*d<=x)
		if (x%d==0) p=putere(d, x);
			else d+=2;
		if (d*d>x) {d=x;p=x;}
	}
	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();
}