Cod sursa(job #145504)

Utilizator andrei.12Andrei Parvu andrei.12 Data 28 februarie 2008 21:27:21
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include<stdio.h>

int i, j, nr, sol[1005], n;
char a[2000005];
inline int min(int a, int b){
	if (a < b)
		return a;
	return b;
}
int main()
{
	freopen("ciur.in", "rt", stdin);
	freopen("ciur.out", "wt", stdout);
	
	scanf("%d", &n);
	
	for (i = 2; i*i <= n; i ++)
		if (!a[i])
			for (j = 2*i; j <= n; j += i)
				a[j] = 1;
	
	for (i = n; i > 1; i --)
		if (!a[i]){
			nr ++;
			if (nr <= 1000)
			sol[nr] = i;
		}
	
	printf("%d\n", nr);
	nr = min(1000, nr);
	for (i = nr; i; i --)
		printf("%d ", sol[i]);
	
	return 0;
}