Cod sursa(job #146118)

Utilizator tvladTataranu Vlad tvlad Data 1 martie 2008 11:01:25
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <fstream>
#include <vector>
#include <set>
using namespace std;

vector<int> p;

inline int max ( int a, int b ) { if (a > b) return a; else return b; }

void ciur ( int n, vector<int> &p ) {
	vector<bool> a(n+1);
	for (int i = 2; i <= n; ++i) a[i] = true;
	for (int i = 2; i <= n; ++i) {
		if (a[i]) {
			p.push_back(i);
			for (int j = 2; i*j <= n; ++j) a[i*j] = false;
		}
	}
}

int main() {
	ifstream fin("ciur.in");
	ofstream fout("ciur.out");
	int n = 0;
	fin >> n;
	ciur(n,p);
	fout << p.size() << '\n';
	for (int i = max(p.size()-1000,0); i < p.size(); ++i) fout << p[i] << ' ';
	fout << '\n';
	return 0;
}