Cod sursa(job #420749)

Utilizator samuel91Asofronie Samuel samuel91 Data 20 martie 2010 14:34:13
Problema Fractii Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<fstream>
#define nmax 1000000
using namespace std;
unsigned long  long n,a[nmax],b[nmax];
unsigned long long nr;
void rezolvare()
{
	ofstream g("fractii.out");
unsigned long k=1,i;
for(i=2;i<=n;i++)
{
if(b[k]==i)
	{nr+=b[k]-1; k++;}
else
{
unsigned long l=1,ok;
unsigned long long p,in;
in=i;
p=in;
while(in!=1)
{
if(in%b[l]==0)
{
ok=1;
while(in%b[l]==0)
in/=b[l];
}
if(ok)
p=(p-(p/b[l]));
l++;
ok=0;
}
nr+=p;
}
}
g<<nr*2+1;
	g.close();
}

void prime()
{
	
unsigned long i,k=0,j;
	for(i=1;i<=n;i++)
		a[i]=i;
	i=2;
	while(i<=n)
	{
		while(!a[i]&&i<=n)
			i++;
		if(a[i])
	{b[++k]=a[i]; a[i]=0;
	j=i*i;
	while(j<=n)
		{a[j]=0; j+=i;}}
	i++;
	}
	
}
void citire()
{
	ifstream f("fractii.in");
f>>n;
prime();
rezolvare();
f.close();

}

	int main()
{ 
citire();
return 0;
}