Pagini recente » Cod sursa (job #1575524) | Cod sursa (job #2057650) | Statistici Lita Andrei Rares (LitaAndrei) | Cod sursa (job #1199675) | Cod sursa (job #975055)
Cod sursa(job #975055)
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int** sieve(int n)
{
int **s = malloc(2 * sizeof(int*));
s[0] = calloc((n + 2), sizeof(int));
s[1] = calloc((n + 2), sizeof(int));
int i,j;
for (i = 2; i < n;) {
if (!s[0][i]) {
for (j = i; j <= n; j += i) {
if(s[0][j] == 0) {
s[0][j] = i;
s[1][j] = (i - 1);
} else {
s[0][j] *= i;
s[1][j] *= (i - 1);
}
}
}
if (i > 2)
i+=2;
else
i++;
}
return s;
}
int main()
{
FILE *f = fopen("fractii.in", "r");
FILE *g = fopen("fractii.out", "w");
int n;
fscanf(f, "%d", &n);
int **s = sieve(n);
int i;
int suma = 1;
for (i = 2; i <= n; i ++) {
printf("%d %d %d\n", i, s[0][i], s[1][i]);
suma += 2 * i * s[1][i] / s[0][i];
}
fprintf(g,"%d\n", suma);
fclose(f);
fclose(g);
free(s[0]);
free(s[1]);
free(s);
return 0;
}