Cod sursa(job #1651454)
| Utilizator | Data | 13 martie 2016 13:13:35 | |
|---|---|---|---|
| Problema | Ciurul lui Eratosthenes | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.49 kb |
#include <iostream>
#include <vector>
#include <fstream>
#include <string.h>
using namespace std;
const int Nmax = 2000666;
char isprime[Nmax];
int main() {
ifstream fin ("ciur.in");
ofstream fout ("ciur.out");
int N, ans = 0;
fin >> N;
memset(isprime, 1, N+1);
for (int i = 2; i*i <= N; ++i) {
if (isprime[i]) {
for (int j = i*i; j <= N; j += i)
isprime[j] = 0;
}
}
for(int i = 2; i <= N; ++i)
ans += isprime[i];
fout << ans << endl;
return 0;
}