Cod sursa(job #590869)

Utilizator cr1st18Cristi cr1st18 Data 20 mai 2011 17:58:04
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<fstream>
#define NrP 1000 
using namespace std;

int primes[NrP],phi[1000000];

void GetPrimes(int n)
{
	int i,j;
	
	for(i=2;i<=n;i++)
		if(primes[i] == 0)
			for(j = 2*i;j<=n;j+=i)
				primes[j] = 1;
}

int main()
{
	int pas,i,j,n,s = 0;
	
	ifstream fin("fractii.in");
	ofstream fout("fractii.out");
	
	fin>>n;
		
	GetPrimes(n);
	
	
for(i=1;i<=n;i++)
	phi[i] = 1;

s = 1;

for(i=2;i<=n;i++)
{
	if(primes[i] == 0)
	{
		phi[i] = i-1;
		pas = i*i;
		s+=phi[i];
				
		for(j = 2*i;j<=n;j+=i)
			if(j == pas)
			{
				phi[j] = i*phi[j/i];
				pas = pas*i;
			}
			else
				phi[j] = phi[j]*phi[i];
	}
	else
		s+=phi[i];
}

fout<<2*s-1<<"\n";

return 0;
}