Cod sursa(job #865334)
| Utilizator | Data | 26 ianuarie 2013 12:48:11 | |
|---|---|---|---|
| Problema | Fractii | Scor | 30 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.88 kb |
#include<stdio.h>
int i,cat,n,cate,cat2,ci,d,ciur[1000001];
int main(){
freopen("fractii.in","r",stdin);
freopen("fractii.out","w",stdout);
scanf("%d",&n);
d=2;
while(d*d<=1000000){
for(i=2;i<=1000000/d;i++)
ciur[i*d]=1;
d++;
while(ciur[d]==1)
d++;
}
cate=0;
for(i=2;i<=n;i++){
ci=i;
cat=i;
cat2=1;
d=2;
if(ciur[ci]==1){
while(ci!=1){
if(ci%d==0){
cat=cat*(d-1);
cat2=cat2*d;
while(ci%d==0){
ci/=d;
}
}
d++;
}
cate+=(cat/cat2);
}
else{
cate+=(ci-1);
}
}
cate=(cate*2) +1;
printf("%d",cate);
return 0;
}
