Cod sursa(job #167560)

Utilizator toni2007Pripoae Teodor Anton toni2007 Data 29 martie 2008 19:16:18
Problema Ciurul lui Eratosthenes Scor 30
Compilator c Status done
Runda Arhiva educationala Marime 0.93 kb
#include<stdio.h>
#include<string.h>
//#include<timer.h>
#define N 2000005
//using namespace std;
char v[N+1];
int n,x;
/*void ciur1(){
    int i,j;
    memset(v,0,N);
    v[0]=v[1]=1;
    for (i=2;i<=N;++i)
        if (v[i]==0){
           for (j=i+i;j<=N;j+=i)
               v[j]=1;
        }
}
void ciur2(){
    int i,j;
    memset(v,0,N);
    v[0]=1;v[1]=1;
    for (i=4;i<=N;i+=2)
        v[i]=1;
    for (i=3;i<=N;i+=2)
        if (v[i]==0)
           for (j=i+i;j<=N;j+=i)
               v[j]=1;
}*/
int ciur(){
     int i,j,nr=1;
     //memset(v,0,n);
     x=1;
     for (i=3;i<=n;i+=2)
        if (v[i]==0){
           ++x;
           ++nr;
           for (j=i*i;j<=n;j+=i)
              v[j]=1;
        }
     return nr;
}
int main(){
    //timer t;
    int i;
    freopen("ciur.in","r",stdin);
    freopen("ciur.out","w",stdout);
    scanf("%d",&n);
    printf("%d\n",ciur());
    return 0;
}