Cod sursa(job #188887)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 10 mai 2008 16:42:40
Problema Fractii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include<stdio.h>   
unsigned long long l,d,prim,x[1000],p,n,i,j,sol,e,nc;   
unsigned long long prim1000();   
int main()   
{   
    freopen("fractii.in","rt",stdin);scanf("%llu",&n);   
    freopen("fractii.out","wt",stdout);
    prim1000();   
    sol=1;   
    for(j=2;j<=n;j++)   
    {e=j;   
     nc=j;   
     for(i=1;i<=l;i++)   
     {if(x[i]*x[i]>nc)break;   
     if(nc%x[i]==0)   
     {e/=x[i];e*=x[i]-1;while(nc%x[i]==0)nc/=x[i];}   
     }   
    if(nc>1) {e/=nc;e*=nc-1;}   
    sol=sol+2*e;}   
       
    printf("%llu",sol);   
    return 0;   
}  
unsigned long long prim1000()   
{   
    l=1;x[1]=2;d=3;   
    for(i=3;i<=999;i=i+2)   
    { prim=1;   
      for(d=3;d*d<=i;d=d+2)   
      if(i%d==0) {prim=0;break;}   
      if(prim){l++;x[l]=i;}   
    }   
    return 0;   
}