Bài 3
uses crt;
type int = longint;
var i,j,n,tmp,x:int;
a:array[0..100000] of int;
procedure print_arr(a:array of int;n:int);
var i:int;
begin
for i:=1 to n do write(a[i],' ');
writeln;
end;
begin
clrscr;
readln(n);
for i:=1 to n do read(a[i]);
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i] < a[j] then
begin
tmp:=a[i];
a[i]:=a[j];
a[j]:=tmp;
end;
print_arr(a,n);
readln(x);
for i:=n downto 0 do
if a[i] > x then
break;
inc(i);
for j:=n downto i do
a[j+1]:=a[j];
a[i]:=x;
print_arr(a,n+1);
readln;
end.
Bài 4
uses crt;
type int = longint;
var c:array[0..1000000] of boolean;
i,n:int;
procedure sieve(n:int);
var i,j:int;
begin
for i:=2 to trunc(sqrt(n)) do
if not c[i] then
for j:=i to n div i do
c[i*j]:=true;
end;
begin
clrscr;
readln(n);
sieve(n);
for i:=n downto 1 do
if (n mod i = 0) or not(c[i]) then
write(i,' ');
readln;
end.