Mai intai trebuie sa te autentifici.

Cod sursa(job #370932)

Utilizator SzabiVajda Szabolcs Szabi Data 2 decembrie 2009 19:49:40
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <stdio.h>
#include <math.h>
//char prim[500001];
long prim[1000005];
long n,j=0;

void sterge(long x){
long i;
i=x*x;
while(i<=n){
 prim[i]=1;
 i+=x;
}

}

long tot(long x){
 long produs=x,i=1;
 double produs2=produs,temp;
 while(x!=1){
     while((x%prim[i]!=0)&&(i<=j)){i++;}
     temp=(double) prim[i];
     produs2=produs2*(1-(1/temp));
     do{x=x/prim[i];}while((x%prim[i]==0)&&(x!=1));

 }
 produs=produs2;
 return produs;
}

int main(){
freopen("fractii.in","r",stdin);
freopen("fractii.out","w",stdout);
scanf("%ld",&n);
long i,sum=0;
for(i=2;i<=sqrt(n);i++){
 if(prim[i]==0){sterge(i);}
}
for(i=2;i<=n;i++){
 if(prim[i]==0){j++;prim[j]=i;}
}
prim[++j]=n;

for(i=1;i<=n;i++){
 sum+=tot(i);
}
printf("%ld",2*sum-1);

 return 0;
}