Cod sursa(job #153608)

Utilizator floringh06Florin Ghesu floringh06 Data 10 martie 2008 17:15:51
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.14 kb
#include <cstdio>  
#include <cstring>  
#include <cmath>  
   
using namespace std;  
   
#define FIN "ciur.in"  
#define FOUT "ciur.out"  
#define MAX_V 2000005  
   
 unsigned char C[MAX_V];  
   
 int A[150000];  
   
 int N, Pr;  
   
     void solve ()  
     {  
          int rd = (int) sqrt (N);  
            
          for (int i = 2; i <= rd; ++i)  
          if (C[i] != 1)  
          {  
              int j = i*i;  
              while (j <= N)  
              {  
                    C[j] = 1;  
                    j+=i;  
              }  
          }  
          for (int i = 2; i <= N; ++i)  
              if (C[i] != 1) A[++Pr] = i;  
     }  
   
     int main ()  
     {  
         freopen (FIN, "r", stdin);  
         freopen (FOUT, "w", stdout);  
   
         scanf ("%d", &N);  
           
         solve ();  
           
         printf ("%d\n", Pr);  
//         int i;  
//         if (Pr > 1000)  
//            for (i = Pr - 999; i <= Pr; ++i) printf ("%d ", A[i]);  
//         else for (i = 1; i <= Pr; ++i) printf ("%d ", A[i]);  
           
         return 0;   
     }