Pagini recente » Cod sursa (job #2943725) | Cod sursa (job #3168376) | Cod sursa (job #1909677) | Cod sursa (job #1615835) | Cod sursa (job #782695)
Cod sursa(job #782695)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int nr_prime(int n, unsigned char* cp) {
double i, j, nr = 1;
for(i = 1;i < n; i++) {
if((*(cp + ((long)i) / 8) & (1 << ((long)i) % 8)) == 0) {
nr++;
for(j = 2*(i*i + i); j < n; j+= 2*i+1)
*(cp + ((long)j) / 8) |= (1 << ((long)j) % 8);
}
}
return nr;
}
int main() {
int n, nr, i;
FILE* f;
unsigned char* storage;
f = fopen("ciur.in","rt");
fscanf(f, "%i", &n);
fclose(f);
n = n / 2 + n % 2;
storage = (unsigned char*)calloc(n / 8 + (n % 8 > 0),sizeof(unsigned char));
nr = nr_prime(n, storage);
f = fopen("ciur.out", "wt");
fprintf(f, "%i", nr);
fclose(f);
free(storage);
return 0;
}