Cod sursa(job #6072)

Utilizator skyelHighScore skyel Data 16 ianuarie 2007 22:53:17
Problema Fractii Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb

#include<fstream.h>


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

long tot(long p)
	{

	int 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()
	{
	long n,p,q;
	int i,nr[16];
	ifstream fin(input);
	ofstream fout(output);
	fin>>n;
	a[1]='1';
	for(i=1;i<=16;i++)
		nr[i]=0;
	nr[1]=1;
	for(p=2;p<=n;p++)
		{
		if(a[p]!='1')
			{
			nr[1]+=2*(p-1);
			for(q=p+p;q<=n;q=q+p)
				a[q]='1';
			}
		else
			nr[1]+=2*tot(p);
		i=1;
		while(nr[i]>9)
			{
			nr[i+1]+=nr[i]/10;
			nr[i]=nr[i]%10;
			i++;
			}
		}
	i=15;
	while(i>0)
		{
		if(nr[i]>0)
			fout<<nr[i];
		i--;
		}
	fin.close();
	fout.close();

	return 0;
	}