Cod sursa(job #166156)

Utilizator mihaimoldovanMihai Moldovan mihaimoldovan Data 27 martie 2008 15:39:57
Problema Fractii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
using namespace std;
int euler(int n)
{
    int p=n;
    int d=2,expo=0;
    while(n%d==0)
      expo++,n/=d;
    if(expo>0)
      {
          p/=d;
          p*=(d-1);
      }
    d=3;
    while(n>1)
    {
        expo=0;
        while(n%d==0)
          expo++,n/=d;
        if(expo>0)
        {
          p/=d;
          p*=(d-1);
        }
        d+=2;
        if(d*d>n && n>1)
        {
            p/=n;
            p*=(n-1);
            n=1;
        }
    }
    return p;
}
int main()
{
 int n,k,i,j;
 long long nr=1;
 ifstream fin("fractii.in");
 fin>>n;
 fin.close();
 for(i=2;i<=n;i++)
     {
      nr+=2*euler(i);
     }       
 ofstream fout("fractii.out");
// fout<<euler(6)<<" ";
 fout<<nr;
 fout.close();
 return 0;
}