Pagini recente » Cod sursa (job #2686578) | Cod sursa (job #2906906) | Cod sursa (job #1241032) | Cod sursa (job #3125933) | Cod sursa (job #198136)
Cod sursa(job #198136)
#include <stdio.h>
long a[1000000];
long div[1000000];
void generate(int n)
{
int i, j;
for (i=2; i<=n/2; ++i)
if (div[i-1]==0)
{
for (j=2*i; j<=n; j+= i)
if (div[j-1]==0)
div[j-1]=i;
}
}
int main()
{
long n, i, j ;
freopen ("fractii.in", "r", stdin);
scanf ("%ld", &n);
fclose(stdin);
a[0]=1;
generate (n);
long long s=1;
for (i=2; i<=n; ++i)
{
long d= div[i-1];
if (d)
{
long x=1;
j=i;
while (j%d==0)
{
x*=d;
j/=d;
}
a[i-1]=(x-x/d)*a[j-1];
}
else a[i-1]=i-1;
s+=2*a[i-1];
}
freopen ("fractii.out", "w", stdout);
printf ("%lld", s);
fclose(stdout);
return 0;
}