Pagini recente » Cod sursa (job #1106698) | Cod sursa (job #2398941) | Cod sursa (job #1095255) | Cod sursa (job #451112) | Cod sursa (job #263890)
Cod sursa(job #263890)
#include <stdio.h>
int k;
int pnum[79000];
double totem[1000001];
double tot(int x)
{
for (int i = 0; i < k; i++)
{
if (x % pnum[i] == 0)
{
int xx = x;
while (x % pnum[i] == 0)
{
x /= pnum[i];
}
//res *= (1 - (double)1 / pnum[i]);
if (x == 1)
return (pnum[i] - 1) * (xx / pnum[i]);
else
return totem[x] * totem[xx / x];
}
}
pnum[k++] = x;
return x * (1 - (double)1 / x);
}
int main()
{
int n;
k = 0;
FILE *in = fopen("fractii.in","rt");
FILE *out = fopen("fractii.out","wt");
fscanf(in, "%d", &n);
fclose(in);
double num = 0;
totem[1] = 1;
for (int i = 2; i <=n; i++)
{
totem[i] = tot(i);
//fprintf(out, "totem(%d) = %.0Lf\n", i, totem[i]);
num += totem[i];
}
num = num * 2 + 1;
fprintf(out, "%.0Lf", num);
fclose(out);
return 0;
}