Cod sursa(job #1480353)

Utilizator stoianmihailStoian Mihail stoianmihail Data 2 septembrie 2015 15:03:13
Problema Ciurul lui Eratosthenes Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.67 kb
#include <stdio.h>

#define Nadejde 2000000
#define Smerenie 1415

int N;
char sieve[Nadejde + 1];

int main(void) {
  FILE *f = fopen("ciur.in", "r");

  fscanf(f, "%d", &N);
  fclose(f);

  f = fopen("ciur.out", "w");

  int i, j;
  for (i = 2; i <= Nadejde; i += 2) {
    sieve[i] = 1;
  }
  for (i = 3; i <= Smerenie; i += 2) {
    if (!sieve[i]) {
      int step = (i << 1);
      for (j = i * i; j <= Nadejde; j += step) {
        sieve[j] = 1;
      }
    }
  }
  int count = 1;
  for (i = 3; i <= N; i += 2) {
    if (!sieve[i]) {
      count++;
    }
  }
  fprintf(f, "%d\n", count);
  fclose(f);

  puts("Doamne ajuta!");
  return 0;
}