Pagini recente » Cod sursa (job #2032290) | Cod sursa (job #1863295) | Cod sursa (job #1742485) | Cod sursa (job #684842) | Cod sursa (job #2775762)
#include <fstream>
#include <cmath>
#include <iostream>
using namespace std;
int eratostene(int n) {
bool primes[n + 1];
primes[0] = primes[1] = false;
int i, j;
for (i = 2; i <= n; i++)
primes[i] = true;
int threshold = (int) sqrt(n);
int noPrimes = 0;
for (i = 2; i <= threshold; i++) {
if (!primes[i])
continue;
++noPrimes;
for (j = (i << 1); j <= n; j += i)
if (primes[j])
primes[j] = false;
}
for (i = threshold + 1; i <= n; i++)
if (primes[i])
++noPrimes;
return noPrimes;
}
int main(void) {
ifstream in("ciur.in");
ofstream out("ciur.out");
int n;
in >> n;
out << eratostene(n);
in.close();
out.close();
return 0;
}