Pagini recente » Cod sursa (job #460380) | Cod sursa (job #2771895) | Cod sursa (job #828383) | Cod sursa (job #2030190) | Cod sursa (job #2215156)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("ciur.in");
ofstream cout("ciur.out");
int nprime, n;
vector < int > prime;
bool undiv[2000009];
//void ciur2() {
// for (int i = 2; i <= n; ++i) {
// if (undiv[i] == 0) {
// prime.push_back(i);
// undiv[i] = i;
// }
// for (int p = 0; prime[p] <= undiv[i] && i * prime[p] <= n && p < prime.size(); ++p) {
// if (undiv[i * prime[p]] != 0) {
// undiv[i * prime[p]] = min(undiv[i * prime[p]], prime[p]);
// }
// else {
// undiv[i * prime[p]] = prime[p];
// }
// }
// }
//}
void ciur1() {
for (int i = 4; i <= n; i += 2) {
undiv[i] = 1;
}
for (int i = 3; i * i <= n; i += 2) {
if (undiv[i] == 0) {
for (int j = i * i; j <= n; j += 2 * i) {
undiv[j] = 1;
}
}
}
for (int i = 2; i <= n; ++i) {
nprime += (undiv[i] == 0);
}
}
int main()
{
cin >> n;
ciur1();
cout << nprime;
return 0;
}