Cod sursa(job #144988)

Utilizator damaDamaschin Mihai dama Data 28 februarie 2008 10:58:12
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.48 kb
#include <stdio.h>


int n, prime[150001], cnt;
bool v[2000001];

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

int main()
{
	freopen("ciur.in", "r", stdin);
	freopen("ciur.out", "w", stdout);

	int i, j;

	scanf("%d", &n);

	for(i = 2; i <= n; ++i)
	{
		if(!v[i])
		{
			prime[++cnt] = i;
			for(j = 2 * i; j <= n; j += i)
			{
				v[j] = 1;
			}
		}
	}
	printf("%d\n", cnt);
	for(i = max(cnt - 1000 + 1, 1); i <= cnt; ++i)
	{
		printf("%d ", prime[i]);
	}

	return 0;
}