Cod sursa(job #69543)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 3 iulie 2007 15:02:27
Problema Sum Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include<stdio.h>
#include<fstream.h>
#include<math.h>

typedef struct
{
  long x, e;
}  factor;

long v[100001], u[100001];

long n, contor, nr, x;
	      /*
void descomp(long x)
{
  int exp, d;
  d=2;
  nr=0;
  while (x!=1)
   {
     exp=0;
     if (x%d==0)
       {
	 nr++;
	 while (x%d==0)
	  {
	    exp++;
	    x/=d;
	  }
	 v[nr].e=exp;
	 v[nr].x=d;
       }
     d++;
   }
}

long totient(long x)
{
  long i, c=1;
  for (i=1; i<=nr; i++)
    c*=((v[i].x-1)*pow(v[i].x,v[i].e-1));
  return c;
}
		*/

void eratostene()
{
  long long i,j;
  for(i=2;i<=100001;i++) v[i]=i;

  for(i=2;i<=100001;i++)
   {
    if(i>x) break;
    if(u[i]==0)
     {
      j=2;
      v[i]--;
      while(i*j<=x)
	{
	  u[i*j]=1;
	  v[i*j]=v[i*j]-v[i*j]/i;
	  j++;
	}
    
       }
    }
}



void prelucrare2()
{
   long long  i, j, s1;
   ifstream in("sum.in");
   ofstream out("sum.out");
   in>>n;
   eratostene(); 
   for (i=1; i<=n; i++)
     {
       in>>x;
	s1=(v[x]*x)/2;

      s1*=2;
      out<<s1*2<<'\n';
     }
}




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