Cod sursa(job #936074)
Utilizator | Dragos Martac Master011 | Data | 5 aprilie 2013 14:22:55 |
---|---|---|---|
Problema | Ciurul lui Eratosthenes | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.55 kb |
#include<cstdio>
#define CLOSE fclose(in); fclose(out); return 0;
using namespace std;
FILE *in,*out;
const int LIM = 2000010;
char v[LIM+10];
int ciur(int n){
int cnt =0;
for(register int i = 2; i<=n; ++i)
if(!v[i]){
++cnt;
for(register long long j = (long long)i*i; j<=n; j+=i)
v[j]=1;
}
return cnt;
}
int main(){
in=fopen("ciur.in","r");
out=fopen("ciur.out","w");
int X;
fscanf(in,"%d",&X);
fprintf(out,"%d\n",ciur(X));
CLOSE
}