Cod sursa(job #1242976)
| Utilizator | Data | 15 octombrie 2014 13:12:19 | |
|---|---|---|---|
| Problema | Ciurul lui Eratosthenes | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.56 kb |
#include<fstream>
#define nx 2000007
using namespace std;
int n,i,j;
char bit[nx/8+1];
bool verify(int poz)
{
if(bit[poz<<3] & (1<<(poz&7)))return 1;
return 0;
}
void modify(int poz)
{
bit[poz<<3]|=(1<<(poz&7));
}
ifstream fin("ciur.in");
ofstream fout("ciur.out");
int main()
{
fin>>n;
fout<<"2 ";
for(i=3;i<=n;i+=2)
{
if(!verify(i))
{
fout<<i<<" ";
if(1LL*i*i<=1LL*n)
for(j=i*i;j<=n;j+=i)
modify(j);
}
}
return 0;
}
