Cod sursa(job #113043)

Utilizator alex_dincaDinca Alexandru-Nicolae - UPB alex_dinca Data 8 decembrie 2007 15:45:14
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<fstream.h>
#include<math.h>
#define nrfe 100001

long int n, a[nrfe], x[nrfe], i, j;
long int e, aux, d, sol;

void citire(){
ifstream fin("fractii.in");
fin>>n;
fin.close();
}

void eratostene(){
for(i=2;i<=n;i++)
   if(!a[i])
      for(j=2;j<=n/i;j++) a[i*j]=i;
}

void afisare(){
ofstream fout("fractii.out");
fout<<sol<<'\n';
fout.close();
}

long int fc(long int nr){
if(!a[nr]) return (nr-1);
else{d=a[nr];
     aux=nr;
     e=0;
     while(aux>0 && !aux%d) {
	  e++;
	  aux/=d;
	  }
    if(aux==1) return ((d-1)*pow(d,e-1));
    else return x[pow(d,e)]*x[aux];
    }
}

int main(){
citire();
x[1]=0, x[2]=1, x[3]=2;
eratostene();
for(i=4;i<=n;i++) x[i]=fc(i);
sol=0;
for(i=2;i<=n;i++) sol+=x[i];
sol*=2;
sol++;
afisare();
return 0;
}