Cod sursa(job #300225)
| Utilizator | 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;
}
