Cod sursa(job #530318)

Utilizator marcelcodreaCodrea Marcel marcelcodrea Data 7 februarie 2011 15:33:51
Problema Ciurul lui Eratosthenes Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <iostream>
#define N 2000005
using namespace std;

int n;
int ok;
int cnt;
int sir[N];
int modul(int u) {
    int p = u / 2;
    if (2 * p == u) return 0;
    return 1;
}
int main() {
    freopen("ciur.in","r",stdin);
    freopen("ciur.out","w",stdout);
    scanf("%d",&n);
    ok = 1 - (n % 2);
    for(int i = 1; i <= n / 2; i++)
     sir[i] = 1;
    for(int i = 1; 2 * i + 1 <= n; i++)
     if (sir[i] == 1) {
         for(int j = (2 * i + 1) * (2 * i + 1); j <= n; j += (2 * i + 1))  {
             if (modul(j) == 1)
              sir[j/2] = 0;
         }
         cnt++;
     }
     printf("%d\n",cnt + 1);
}