Cod sursa(job #2375479)
Utilizator | Data | 8 martie 2019 09:47:49 | |
---|---|---|---|
Problema | Ciurul lui Eratosthenes | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.56 kb |
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
int N, nump;
bool sieve[2000001];
void Sieve()
{
nump=1;
int lim=(int)sqrt(N);
for (int i=3;i<=N;i+=2)
{
if (sieve[i])
continue;
nump++;
if (i>lim)
continue;
for (int j=i*i;j<=N;j+=i)
sieve[j]=1;
}
}
int main()
{
ifstream f("ciur.in");
ofstream g("ciur.out");
f>>N;
if (N==2)
g<<1;
else
{
Sieve();
g<<nump;
}
}