uses crt;
var n:integer;
    Sang: set of byte;
    //a: array [1..100] of integer;
    i, k, sqrtn: integer;
BEGIN
        CLRSCR;

        write('Nhap so n: ');readln(n); // n < 256 phan tu
        Sang:= [2..n];
        i:= 2;
        sqrtn:= trunc(sqrt(n));
        repeat
                write(i:3, ' ');
                for k:= 2 to n div i do
                        Sang:= Sang - [k*i];
                i:= i+1;
                while (i <= n) and not (i in Sang) do i:= i+1;
        until i > sqrtn;

        while i <= n do
        begin
                if i in Sang then write(i:3, ' ');
                i:= i+1;
        end;
        readln;
END.