Cod sursa(job #26898)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 5 martie 2007 22:24:26
Problema Sum Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include<stdio.h>
long long int p[1000],l,d,prim,i,x,j,viz[200001],n,e,x1,s,sc;
int main()
{
	p[1]=2;l=1;
	d=3;
	do{prim=1;
	   for(i=1;(p[i]*p[i])<=d;i++)
	   if(d%p[i]==0) {prim=0;break;}
	   if(prim) {l++;p[l]=d;}
	   d=d+2;}
	while(d<=600);
	FILE *f,*g;
	f=fopen("sum.in","r");
	g=fopen("sum.out","w");
	fscanf(f,"%lld",&n);
	for(i=1;i<=n;i++)
	{	fscanf(f,"%lld",&x);s=0;
		for(j=1;j<=x;j++)viz[j]=0;
		s=x*(2*x+1);x1=x;
		for(j=1;p[j]*p[j]<=x1;j++)
		{	if(x1%p[j]==0)
			{	while(x1%p[j]==0)x1/=p[j];
				e=p[j];
				sc=e;
				while(sc<=x)
				{	if(viz[sc]==0)
					{viz[sc]=1;s-=x+2*sc;}
				sc+=e;
				}
			}
			if(x1>1)
			{	e=x1;
				sc=e;
				while(sc<=x)
				{	if(viz[sc]==0)
					{viz[sc]=1;s-=x+2*sc;}
					sc+=e;
				}
			}
		}
		fprintf(g,"%lld",s);
	}
	fcloseall();
	return 0;
}