Cod sursa(job #1426179)

Utilizator tamionvTamio Vesa Nakajima tamionv Data 29 aprilie 2015 05:44:15
Problema Ciurul lui Eratosthenes Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.52 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))+1;
	num rez = 1; // mai exact, 2
	vector<bool> e_prim(x/2 + 1, true);
	for(num i = 3, j; i <= x; i += 2){
		if(e_prim[i/2]){
			++rez;
			if(i <= pana_la){
				for(j = i*i; j <= x; j += 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; }