Mai intai trebuie sa te autentifici.
Cod sursa(job #2457524)
Utilizator | Data | 17 septembrie 2019 22:32:10 | |
---|---|---|---|
Problema | Ciurul lui Eratosthenes | Scor | 20 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 1.07 kb |
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("ciur.in");
ofstream fout("ciur.out");
vector <int> v(3);
vector <int> ::iterator it,it1;
queue <int> w;
int n,verif;
void functie(int i)
{
int vi=v[i];
it1=it;
//cout<<*it1;
int j=i,x=v[i]*v[j],a,b;
while(v[i]*v[j]<=n)
{
x=v[i]*v[j];
w.push(v[i]*v[j]);
j++;
}
while(!w.empty())
{
a=w.front();
b=*it1;
if(w.front()==*it1)
v.erase(it1),w.pop();
else
it1++;
}
}
int main()
{
v[2]=2,v[1]=1;
it=v.begin();
v.erase(it);
v.erase(v.begin());
int i;
fin>>n;
for(i=3;i<=n;i++)
if(i%2==1)
v.push_back(i);
i=1;
it=v.begin();// it are ca si element 3
it++;
while(v[i]*v[i]<=n)
{
verif=v.size();
functie(i);
i++,it++;
}
fout<<v.size();
return 0;
}