Cod sursa(job #118646)

Utilizator sigridMaria Stanciu sigrid Data 27 decembrie 2007 10:51:58
Problema Sum Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<fstream.h>
#include<math.h>
int prim(unsigned long x)
{unsigned long jum;
 jum=sqrt(x);
 unsigned long i;
 if(x==2) return 1;
 if((x%2)==0) return 0;
 for(i=3;i<=jum;i=i+2)
  {if((x%i)==0) return 0;
  }
 return 1;
}
int main()
{ifstream f("sum.in");
 ofstream g("sum.out");
 unsigned long x,n,i,j,x2,jj,max,xx;
 f>>n;
 unsigned long v[200000],xx2;
 for(i=1;i<=n;i++)
  {f>>x;
   x2=((x*2)*((x*2)+1))/2;
   if(prim(x)) g<<(x2-x-(2*x))<<'\n';
   else
    {xx2=x*2;
     for(j=1;j<=xx2;j++) v[j]=j;
     max=x2;
     xx=x/2;
     for(j=2;j<=xx;j++)
      {if((x%j)==0)
	{for(jj=2;jj<=xx2;jj++)
	  if(((jj%j)==0)&&(v[jj])) {max-=v[jj];v[jj]=0;}
	}
      }
     g<<max<<'\n';
    }
  }
 f.close();
 g.close();
return 0;
}