Cod sursa(job #865334)

Utilizator avaspataruAva Spataru avaspataru 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;
}