Cod sursa(job #2522087)

Utilizator Narcis09Grecu Narcis Narcis09 Data 11 ianuarie 2020 22:49:16
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.48 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
#define dm 2000001
ifstream fin("ciur.in");
ofstream fout("ciur.out");

bool ciur[dm];

int er(int dmax){
	int i, j, x, k=1;
	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){
			++k;
			for (j=i*i;j<=dmax;j+=2*i)
				ciur[j]=1;
		}
	return k;
}

int main(){
	int n, k=1, i;
	fin>>n;
	k=er(n);
	for (i=sqrt(n)+1;i<=n;++i)
		if (ciur[i]==0) ++k;
	fout<<k;
}