Pagini recente » Cod sursa (job #53420) | Cod sursa (job #159333) | Cod sursa (job #1993609) | Cod sursa (job #295361) | Cod sursa (job #172177)
Cod sursa(job #172177)
#include<fstream>
//#include<math>
using namespace std;
int v[1000010];
long prim[100000],tot[1000010];
int main()
{
ifstream f("fractii.in");
ofstream g("fractii.out");
long i,n,j,l=0,k,e,a;
f>>n;
for (i=4;i<=n;i+=2) v[i]=1;
for (i=3;i<=sqrt(n);i+=2)
{
v[i-1]=1;
if (v[i]==0)
{
for (j=i*i;j<=n;j+=i) v[j]=1;
}
}
if (n%2==0) v[n]=1;
v[2]=0;
for (i=2;i<=n;i++) if (v[i]==0) prim[++l]=i;
tot[1]=1;
for (i=2;i<=n;i++)
{
if (!v[i]) tot[i]=i-1;
else
{
for (j=1;j<=l;j++)
{
if (i%prim[j]==0)
{
k=prim[j];
a=i;
e=0;
while (a%k==0)
{
e++;
a/=k;
}
break;
}
}
tot[i]=(k-1)*(i/(a*k))*tot[a];
}
}
long long s=0;
for (i=2;i<=n;i++) s+=tot[i];
s=s*2+1;
g<<s;
g<<'\n';
f.close();
g.close();
return 0;
}