Code:
Program baitap;
uses crt;
type
mang = array[1..100] of integer;
var
a,x:mang;
n,i,k:integer;
Function ngto(a:mang;i:integer):boolean;
var k:integer;
begin
ngto:=false;
if a[i]<2 then exit;
FOr k:=2 to round(sqrt(a[i])) do
If a[i] mod k = 0 then exit;
ngto:=true;
end;
Function uocso(a:mang;i,n:integer):boolean;
var k:integer;
begin
For k:=n downto i+1 do
If a[k] mod a[i] = 0 then
begin
uocso:=true;
exit;
end
else uocso:=false;
end;
BEGIN
Write('n = ');
Readln(n);
For i:=n downto 1 do
a[i]:=i;
i:=1;
k:=1;
While i<=n do
begin
IF ngto(a,i) or uocso(a,i,n) then
begin
x[k]:=a[i];
k:=k+1;
i:=i+1;
end else
i:=i+1;
end;
For i:=k downto 1 do
write(x[i]);
Readln;
END.
Test luôn rồi đấy. THuật toán hơi rắc rối:
Đầu tiên gán từ n về 1 cho mảng a rồi là kiểm tra xem a[i] có phải số nguyên tố và ước số không. Nếu là ước số và nguyên tố thì gán vào mảng x. CHúc bạn học tốt.
Bookmarks