Cod sursa(job #477229)

Utilizator dicu_dariaDaria Dicu dicu_daria Data 13 august 2010 21:10:10
Problema Fractii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>

using namespace std;
bool prim[1000005];
int a[1000005];
int x,y,z,ind,nr,k;
unsigned long long suma;
int main()
{
    int i,j,n;
    ifstream fi("fractii.in");
    ofstream fo("fractii.out");
    fi>>n;
    for(i=2;i<=1000000;i++)
    if(!prim[i])
      for(j=i+i;j<=1000000;j+=i)
       { prim[j]=1; a[j]=i;}


    suma=0;
    for(i=2;i<=n;i++)
    {
      if(!prim[i]) a[i]=i-1; else {
                                                      x=a[i];
                                                      y=i;
                                                      z=1;
                                                      while(y%x==0)
                                                      { y/=x; nr++; z*=x; }
                                                      if(z!=i)
                                                      a[i]=a[z]*a[i/z]; else a[i]=(x-1)*(z/x);

                                               }
     suma+=a[i];
    }
    fo<<suma*2+1<<"\n";
    return 0;
}