Pagini recente » Cod sursa (job #1517784) | Cod sursa (job #465729) | Cod sursa (job #2197952) | Cod sursa (job #1944933) | Cod sursa (job #251756)
Cod sursa(job #251756)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define in "ciur.in"
#define out "ciur.out"
#define MAX 2000000
long sieve(long n)
{
long nr, i, j, l;
char s[MAX];
if (n == 2)
{
return 1;
}
nr = 1;
for (i = 3; i <= n; i+=2 )
{
if (s[i/2] == 0)
{
nr++;
j = i * i;
l = 2 * i;
while (j <= n)
{
//printf("i %ld j %ld j/2 %ld\n",i, j, j/2);
s[j / 2] = 1;
j += l;
}
}
}
return nr;
}
int main()
{
long n;
FILE *fin, *fout;
if ((fin = fopen(in, "r")) == NULL)
{
printf("Eroare \n");
exit(-1);
}
fscanf(fin, "%ld", &n);
fclose(fin);
fout = fopen(out, "w");
n = sieve(n);
printf("%ld\n", n);
fprintf(fout,"%ld", n);
fclose(fout);
return 0;
}