Cod sursa(job #7816)

Utilizator skyelHighScore skyel Data 22 ianuarie 2007 18:32:23
Problema Fractii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<math.h>
#include<fstream.h>


#define input "fractii.in"
#define output "fractii.out"
int a[1000];

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;
	long long nr;

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