Pagini recente » Cod sursa (job #982547) | Cod sursa (job #3202323) | Cod sursa (job #335407) | Cod sursa (job #2052988) | Cod sursa (job #2835335)
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int num1;
int num2;
} Pair;
Pair *getPrimeNumbersUntil2(int n) {
Pair *array = (Pair *) malloc((n + 1) * sizeof(Pair));
for (int i = 0; i < n + 1; ++i) {
array[i].num1 = 1;
array[i].num2 = 1;
}
for (int i = 2; i <= n; ++i) {
if (array[i].num2 == 1) {
for (int j = i; j <= n; j += i) {
array[j].num1 *= i - 1;
array[j].num2 *= i;
}
}
}
return array;
}
long long v5(int n) {
if (n == 1) {
return 1;
}
Pair *numbers = getPrimeNumbersUntil2(n);
long long fractionsCount = 1;
for (int num = 2; num <= n; ++num) {
fractionsCount += 2 * num / numbers[num].num2 * numbers[num].num1;
}
free(numbers);
return fractionsCount;
}
int main() {
char *inFileName = "fractii.in";
char *outFileName = "fractii.out";
FILE *in = fopen(inFileName, "r");
if (in == NULL) {
printf("Cannot open %s.\n", inFileName);
return 1;
}
FILE *out = fopen(outFileName, "w");
int n;
fscanf(in, "%d", &n);
fprintf(out, "%lld", v5(n));
fclose(in);
fclose(out);
return 0;
}