Cod sursa(job #7811)

Utilizator skyelHighScore skyel Data 22 ianuarie 2007 18:19:41
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb

#include<fstream>


#define input "fractii.in"
#define output "fractii.out"
char a[1000000];

long tot(long p)
	{
	long i=2;
	long t=p;
	while(i<=p)
		{
		if(a[i]!='1'&&p%i==0)
			{
			t=t*(i-1)/i;
			while(p%i==0)
				p=p/i;
			if(a[p]!='1')
				{
				t=t*(p-1)/p;
				break;
				}
			}
		i++;
		}

	return t;
	}
int main()
	{
	int h;
	long n,p,q,nr;

	ifstream fin(input);
	ofstream fout(output);
	fin>>n;
	h=0;
	a[1]='1';
	nr=1;
	for(p=2;p<=n;p++)
		{
		if(a[p]!='1')
			{
			nr+=2*(p-1);
			for(q=p+p;q<=n;q=q+p)
				a[q]='1';
			}
		else
			nr+=2*tot(p);
		if(nr>1000000000)
			{
			h=h+(nr/1000000000);
			nr=nr%1000000000;
			}
		}
	if(h>0)
		fout<<h<<nr<<"\n";
	else
		fout<<nr<<"\n";
	fin.close();
	fout.close();
	return 0;
	}