Cod sursa(job #1093136)
| Utilizator | Data | 27 ianuarie 2014 19:15:05 | |
|---|---|---|---|
| Problema | Ciurul lui Eratosthenes | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.8 kb |
#include <cstdio>
using namespace std;
int nr=1;
bool ok[10000001];
void ciur (int n)
{
int i, j;
for (i=1; ((i*i)<<1)+(i<<1)<=n; i++)
{
if (ok[i]==false)
{
for (j=((i*i)<<1)+(i<<1); (j<<1)+1<=n; j+=(i<<1)+1) ok[j]=true;
}
}
for (i=1; (i<<1)+1<=n; i++)
{
if (ok[i]==false) nr++;
}
}
int main()
{
int n;
freopen("ciur.in","r",stdin);
freopen("ciur.out","w",stdout);
scanf("%d",&n);
ciur(n); printf("%d",nr);
fclose(stdin);
fclose(stdout);
return 0;
}
