Pagini recente » Cod sursa (job #2949751) | Cod sursa (job #1594024) | Cod sursa (job #1272857) | Cod sursa (job #1587576) | Cod sursa (job #789038)
Cod sursa(job #789038)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void mark(char *ciur, int prime, int N)
{
int i;
for (i = 2 * prime; i <= N; i+= prime)
ciur[i] = 1;
}
int main()
{
int N, i, limit, count = 1; /* two's */
FILE *f = fopen("ciur.in", "rt");
FILE *g = fopen("ciur.out", "wt");
char *ciur = NULL;
fscanf(f, "%d", &N);
limit = sqrt(N);
ciur = calloc(N+1, sizeof(char));
for (i = 2; i <= limit; i++)
if (!ciur[i])
mark(ciur, i, N);
for (i = 3; i <= N; i+=2)
if (!ciur[i])
count++;
fprintf(g, "%d", count);
fclose(f);
fclose(g);
free(ciur);
return 0;
}