Cod sursa(job #386197)
Utilizator | Data | 24 ianuarie 2010 12:26:01 | |
---|---|---|---|
Problema | Ciurul lui Eratosthenes | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.46 kb |
#include<fstream>
using namespace std;
ifstream f("ciur.in");
ofstream g("ciur.out");
int n,i,j,k,p,c,v[2000001];
char x[2000001];
int main()
{
f>>n;
v[1]=2;i=1;j=1;x[1]=1;
while(2*i+1<=n)
{j++;
v[j]=2*i+1;x[j]='1';
i++;}
k=2;
while(p*p<=n)
{p=v[k];
for(i=1;i<=j;i++)
if(v[i]%p==0)
x[i]='0';
c=0;
for(i=1;i<=j;i++)
if(x[i]=='1')
{c++;
x[c]='1';
v[c]=v[i];}
j=c;
k++;}
g<<j;
f.close(); g.close();
return 0;
}