Cod sursa(job #241461)
Utilizator | Data | 10 ianuarie 2009 06:15:39 | |
---|---|---|---|
Problema | Fractii | Scor | 70 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.4 kb |
#include<stdio.h>
int main(){
freopen("fractii.in","r",stdin);
freopen("fractii.out","w",stdout);
long long n,i,j,fi,r,nr;
scanf("%lld",&n);
r=1;
for(i=2;i<=n;++i){
nr=i;fi=nr;
if(nr%2==0){
fi=fi/2;
while(nr%2==0) nr/=2;
}
for(j=3;j*j<=nr;j+=2)
if(nr%j==0){
fi=fi*(j-1)/j;
while(nr%j==0) nr/=j;
}
if(nr>1) fi=fi*(nr-1)/nr;
r=r+2*fi;
}
printf("%lld",r);
return 0;
}