Cod sursa(job #2522016)
| Utilizator | Data | 11 ianuarie 2020 20:42:23 | |
|---|---|---|---|
| Problema | Ciurul lui Eratosthenes | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.45 kb |
#include <iostream>
#include <fstream>
using namespace std;
#define dm 2000001
ifstream fin("ciur.in");
ofstream fout("ciur.out");
bool ciur[dm];
void er(int dmax){
int i, j, x;
x=dmax/2;
ciur[0]=ciur[1]=1;
for (i=2;i<=x;++i) ciur[2*i]=1;
for (i=3;i*i<=dmax;i+=2)
if (ciur[i]==0){
x=dmax/i;
for (j=3;j<=x;j+=2)
ciur[i*j]=1;
}
}
int main(){
int n, k=1, i;
fin>>n;
er(n);
for (i=3;i<=n;i+=2)
if (ciur[i]==0){
++k;
}
fout<<k;
}
