Cod sursa(job #661216)

Utilizator penultim_oVijiala Tudor Gabriel penultim_o Data 14 ianuarie 2012 00:09:03
Problema Fractii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<fstream>
#define MAX 1000020
using namespace std;
ifstream in("fractii.in");
ofstream out("fractii.out");
int prime[80000],k;
char ciur[MAX];
//int v[MAX];

void init()
{
	int i, j;
	k=0;
	for(i=2;i<MAX;i++)
		if(ciur[i]==0)
		{
			prime[k]=i; k++;
			for(j=i+i;j<MAX;j+=i)
				ciur[j] = 1;
		}
}


int phi(int x)
{
	int i=0, r=x, e;
	while(x>1)
	{
		e=0;
		while(x%prime[i]==0) {x/=prime[i]; e++;}
		if(e>0) r = r/prime[i]*(prime[i]-1);
		if(x==1) return r;
		if(ciur[x]==0) {r = r/x*(x-1); return r;}
		i++;
	}
	return r;
}
		

int main()
{
	init();
	int n, i;
	long long s=0;
	in >> n;
	for(i=2;i<=n;i++)
		s+=phi(i);
	s = s*2 + 1;
	out << s;
	
	return 0;
}