Cod sursa(job #24337)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 2 martie 2007 07:59:38
Problema Fractii Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include<stdio.h>
unsigned long int l,d,prim,x[1000],p,n,i,j,sol,e,nc;
unsigned long int prim1000()
{
	l=1;x[1]=2;d=3;
	for(i=3;i<=999;i=i+2)
	{ prim=1;
	  for(d=3;d*d<=i;d=d+2)
	  if(i%d==0) {prim=0;break;}
	  if(prim){l++;x[l]=i;}
	}
	return 0;
}
int main()
{
	FILE *f=fopen("fractii.in","r");
	fscanf(f,"%lu",&n);
	fclose(f);
	prim1000();
	sol=1;
	for(j=2;j<=n;j++)
	{e=j;
	 nc=j;
	 for(i=1;i<=l;i++)
	 {if(x[i]*x[i]>nc)break;
	 if(nc%x[i]==0)
	 {e/=x[i];e*=x[i]-1;while(nc%x[i]==0)nc/=x[i];}
	 }
	if(nc>1) {e/=nc;e*=nc-1;}
	sol=sol+2*e;}
	f=fopen("fractii.out","w");
	fprintf(f,"%lu",sol);
	fclose(f);
	return 0;
}