Pagini recente » Cod sursa (job #1098986) | Cod sursa (job #2742919) | Cod sursa (job #1625895) | Cod sursa (job #2822463) | Cod sursa (job #266565)
Cod sursa(job #266565)
#include <stdio.h>
int k;
int pnum[79000];
double totem[1000001];
double tot(int x)
{
bool prim = true;
double res = x;
for (int i = 0; i < k; i++)
{
if (x % pnum[i] == 0)
{
prim = false;
while (x % pnum[i] == 0)
{
x /= pnum[i];
}
res *= (1 - (double)1 / pnum[i]);
}
}
if (prim)
{
pnum[k++] = x;
res *= (1 - (double)1 / x);
}
return res;
}
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 sum = 0;
totem[1] = 1;
for (int i = 2; i <= n; i++)
{
if (totem[i] == 0)
{
sum += (i * (1 - (double)1 / i)) / 1;
for (int j = i * 2; j <= n; j += i)
{
if (totem[j] == 0)
totem[j] = j;
totem[j] *= (1 - (double)1 / i);
totem[j] /= 1;
}
}
else
sum += totem[i];
}
fprintf(out, "%.0Lf", sum * 2 + 1);
fclose(out);
return 0;
}