Pagini recente » Cod sursa (job #2034701) | Cod sursa (job #1769157) | Cod sursa (job #48854) | Cod sursa (job #2292220) | Cod sursa (job #251773)
Cod sursa(job #251773)
#include <stdio.h>
#include <stdlib.h>
#define in "ciur.in"
#define out "ciur.out"
#define MAX 2000000
unsigned long sieve(unsigned long n)
{
unsigned long nr, i, j, m;
unsigned char s[MAX/2+1];
if (n == 2)
{
return 1;
}
nr = 1;
m = n/2+1;
for (i = 0 ; i < m; s[i] = 0, i++)
;
for (i = 3; i <= n; i+=2 )
{
if (s[i/2] == 0)
{
nr++;
for (j = i/2; j < m; j += i)
{
s[j] = 1;
}
}
}
return nr;
}
int main()
{
unsigned 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;
}