Cod sursa(job #744189)

Utilizator cipriancxFMI - gr143 Timofte Ciprian cipriancx Data 7 mai 2012 23:17:09
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<iostream>
#include<cstdio>
#include<math.h>


using namespace std;

long int n,dim,fractii;
long int a[10000001];
long int nrprime[100001];


int coef(int div, int nr)
{

int aux=1;
nr=nr/div;
while(nr%div==0)
{ aux++; nr=nr/div;  }

return aux;

}


long int euler(long int nr)
{

if(nr%4==2)return euler(nr/2);

int prim=1;
long int i,j;


long int sum=1;
for(i=1; i<dim; i++)
{
if(nr%nrprime[i]==0)  { 

long int aux=nrprime[i];

sum=sum*(aux-1)*pow(aux,coef(aux,nr)-1);
                 }
}


return sum;

}




int main(void)
{

freopen("fractii.in","r",stdin);
freopen("fractii.out","w", stdout);



cin>>n;

long int i,k;
dim=1;

for(i=2; i<=n; i++)
{
if(a[i]==0)  {
                    a[i]=1;
                   nrprime[dim]=i;
                  for(k=i; k<=n; k+=i)a[k]=1;
                     dim++;
                 }
}


long int j;


for(j=n; j>=2; j--)
{

fractii+=euler(j);
}

cout<<2*fractii+1;



return 0;
}