Cod sursa(job #119107)

Utilizator mike4problemsRadu Gabriel mike4problems Data 29 decembrie 2007 15:46:50
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<cstdio>
#define Max 1000000
char p[Max];
int x[100000],nr,n;

long long rez;

void ciur()
 {
 int i,j;
 x[nr++]=2;
 for(i=3;i<=n;i+=2)
  if(p[i]==0)
   {
   x[nr++]=i;
   for(j=i*i;j<=n;j+=2*i)
    p[j]=1;
   }
 }

void totient()
 {
 double tot;
 int i,j,k;
 for(i=2;i<=n;i++)
  {
  for(tot=(double)i,k=i,j=0;j<nr&&k>1;j++)
   if(k%x[j]==0)
    {
    tot*=(1-1/(double)x[j]);
    while(k%x[j]==0)
     k/=x[j];
    }
  rez+=(long long)tot;
  }
 rez=2*rez+1;
 }

int main()
 {
 freopen("fractii.in","r",stdin);
 scanf("%d",&n);
 ciur();
 totient();
 freopen("froactii.out","w",stdout);
 printf("%lld\n",rez);
 return 0;
 }