Pagini recente » Cod sursa (job #1692473) | Monitorul de evaluare | Cod sursa (job #2474634) | Cod sursa (job #829702) | Cod sursa (job #263872)
Cod sursa(job #263872)
#include <stdio.h>
int k;
int pnum[79000];
double tot(int x)
{
double res = x;
bool isPrime = true;
for (int i = 0; i < k; i++)
{
if (x % pnum[i] == 0)
{
isPrime = false;
while (x % pnum[i] == 0)
x /= pnum[i];
res *= (1 - (double)1 / pnum[i]);
}
}
if (isPrime)
{
res *= (1 - (double)1 / x);
pnum[k++] = 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 num = 0;
for (int i = 2; i <=n; i++)
{
num += tot(i);
}
num = num * 2 + 1;
fprintf(out, "%.0Lf", num);
fclose(out);
return 0;
}