Cod sursa(job #300225)

Utilizator igsifvevc avb igsi Data 7 aprilie 2009 12:09:33
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<fstream.h>
#include<math.h>

#define xx 1000001

ifstream fin("fractii.in");
ofstream fout("fractii.out");

long a[xx],n,nr;

int main()
{
    long rad,x,i,p,pa;
    
    fin>>n;
    
    a[1]=1;
    
    for(i=2;i<=n;i++)
    {
      x=i;
      p=2;
      rad=(long)sqrt(x);
      while(p<=rad && x%p)
        p++;
      
      if(p>rad)
         a[i]=i-1;
      else
      {
        pa=1;
        while(x%p==0)
        {
          pa*=p;
          x/=p;
        }
        pa/=p;
        a[i]=pa*(p-1)*a[x];
      }
    }
    
    for(i=2;i<=n;i++)
      nr+=a[i];
    
    fout<<2*nr+1<<'\n';
    fout.close();
    return 0;
}