Cod sursa(job #300269)

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

#define xx 1000001

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

long a[xx],n;
unsigned long long nr;

int main()
{
    long x,i,p,pa;
    double rad;
    
    fin>>n;
    
    a[1]=1;
    
    for(i=2;i<=n;i++)
    {
      x=i;
      p=2;
      rad=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];
      }
    }
    
    nr=0;
    for(i=2;i<=n;i++)
      nr+=a[i];
    
    nr=2*nr+1;
    
    fout<<nr<<'\n';
    fout.close();
    return 0;
}