Cod sursa(job #52267)

Utilizator requiemPop Cristian requiem Data 18 aprilie 2007 13:48:13
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include<stdio.h>

int a[30000],c;
int main()
{
	freopen("fractii.in","r",stdin);
	freopen("fractii.out","w",stdout);

	long n,i,s=0,j,aux;
	scanf("%ld",&n);
	for(i=2;c<n;++i)
		if(!a[i])
		{
			++c;
			for(j=2*i;j<=30000;j+=i)
				a[j]=1;
		}

	for(i=2;i<=n;++i)
	{
		if(a[i]==0)
		{
			s+=(i-1)*2;
	   //		continue;
		}
		else
		{
			aux=i;
			if(i%2==0)
			{
				if(4<=i)
					aux-=aux/2;
			}
			for(j=3;j<=i/2;j+=2)
			   if(i%j==0)
					if(a[j]==0)
						if(2*j<=i)
							aux-=aux/j;


			s+=2*aux;
		}
	}
	printf("%ld",s+1);
	return 0;
}