Cod sursa(job #1426180)

Utilizator tamionvTamio Vesa Nakajima tamionv Data 29 aprilie 2015 05:53:32
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.53 kb
#include <vector>
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;

using num = unsigned long long;

num ciur(const num x){
	const int pana_la = ceil(sqrt(x));
	num rez = 1; // mai exact, 2

	vector<bool> e_prim(x/2 + 1, true);

	for(num i = 3; i <= x; i += 2){
		if(e_prim[i/2]){
			++rez;
			if(i <= pana_la){
				for(int j = i*i; j <= x; j += 2*i){
					e_prim[j/2] = false; } } } }
	return rez; }

int main(){
	ifstream f("ciur.in");
	ofstream g("ciur.out");
	num n = 0;
	f >> n;
	g << ciur(n);
	return 0; }