Cod sursa(job #1285053)
| Utilizator | Data | 7 decembrie 2014 01:18:11 | |
|---|---|---|---|
| Problema | Ciurul lui Eratosthenes | Scor | 30 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.44 kb |
#include <bits/stdc++.h>
using namespace std;
vector <int> Q;
int Ld[2000013],sol(0),n;
int main()
{
ifstream cin("ciur.in");
ofstream cout("ciur.out");
cin>>n;
for (int i=2;i<=n;++i)
{
if (Ld[i]==0)
{
Ld[i]=i;
Q.push_back(i);
}
for (int j=0;j<Q.size() && i*Q[j]<=n && Q[j]<=Ld[i] ; ++j)
Ld[i*Q[j]]=Q[j];
}
for (int i=2;i<=n;++i)
if (Ld[i]==i) ++sol;
cout<<sol;
return 0;
}
