Pagini recente » Cod sursa (job #436260) | Cod sursa (job #2342281) | Cod sursa (job #2861002) | Cod sursa (job #2517572) | Cod sursa (job #2782601)
#include <stdio.h>
#include <stdint.h>
#include <math.h>
void read_uint32_t(FILE *__restrict stream, uint32_t *__restrict nr) {
uint8_t ch;
*nr = 0;
while ((ch = fgetc(stream)) && ('0' <= ch && ch <= '9')) {
*nr *= 10;
*nr += ch - '0';
}
if (ch == '\r') {
fgetc(stream);
}
}
uint32_t a[2000001];
void ciur(uint32_t lim) {
uint32_t i, j;
uint32_t sqlim = sqrt(lim);
for(i = 4; i <= lim; i+=2) {
a[i] = 1;
}
for(i = 3; i <= sqlim; i+=2) {
if (a[i] == 0) {
for(j = i*i; j <= lim; j+= 2*i) {
a[i] = 1;
}
}
}
}
int main(void) {
uint32_t nprim = 1;
uint32_t lim = 0;
{
FILE *__restrict in = fopen("ciur.in", "r");
read_uint32_t(in, &lim);
fclose(in);
}
ciur(lim);
{
int32_t i;
for(i = 3; i <= lim; i+=2) {
if (a[i] == 0) {
++nprim;
}
}
}
{
FILE *__restrict out = fopen("ciur.out", "w");
fprintf(out, "%u", nprim);
fclose(out);
}
return 0;
}