Cod sursa(job #110673)

Utilizator rethosPaicu Alexandru rethos Data 27 noiembrie 2007 11:57:26
Problema Fractii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream.h>
#include <math.h>
#define NMAX 1000000
long long pow(long p,long e)
{ long i;
  long long s=1;
  for (i=1;i<=e;i++) s=s*p;
  return s;
}
long prim(long x)
{ long i,sw,j;
  for (i=2;i<=sqrt(x);i++)
	{ sw=1;
	  if (x%i!=0) sw=0;
	  if (sw)
		{ for (j=2;j<=sqrt(i)&&sw;j++)
			if (i%j==0)
				sw=0;
		}
	  if (sw) return i;
	}
  return 0;
}


int main()
{ long n,i,j,t[NMAX],x,p,e,a;
  long long nr;
  ifstream f("fractii.in");
  f>>n;
  f.close();
  nr=1;
  t[1]=1;
  for (i=2;i<=n;i++)
	{ x=i;
	  p=prim(x);
	  if (p==0) p=x;
	  e=0;
	  while (x%p==0)
		{ e++;
		  x=x/p;
		}
	  a=x;
	  t[i]=(p-1)*pow(p,e-1)*t[a];
	  nr+=2*t[i];
	}
  ofstream g("fractii.out");
  g<<nr;
  g.close();
  return 0;
}