Pagini recente » Cod sursa (job #673223) | Cod sursa (job #2780942) | Cod sursa (job #1563203) | Cod sursa (job #2377317) | Cod sursa (job #1459109)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
char a[1000005];
long long t[1000005];
void ciur()
{
int i, j;
for (i = 2; i < sqrt(1000000); i++){
if (!a[i]){
for (j = i*i; j <= 1000000; j += i)
a[j] = 1;
}
}
}
void totem()
{
int i, j, k, e;
t[1]=t[2]=1;
t[3]=2;
for (i = 4; i <= 1000000; i++)
{
if (!a[i])
t[i] = i-1;
else
{
for (j = 2; j <= sqrt(i); j++)
if (i == (i/j)*j)
{
e = 1;
k = i/j;
while (k == (k/j)*j)
{
k/=j;
e*=j;
}
t[i] = (j - 1)*e*t[k];
break;
}
}
}
}
int main()
{
int n, i;
long long result = 1l;
FILE *f=fopen("fractii.in","r");
fscanf(f,"%d",&n);
ciur();
totem();
for (i = 2; i <= n; i++)
result += 2*t[i];
FILE *out=fopen("fractii.out","w");
fprintf(out,"%lld", result);
return 0;
}