Pascal

Modified: Wednesday, 22-12-2021 07:00 AM

Dãy A gồm N số nguyên dương a1, a2, ..., an được gọi là dãy số đặc biệt nếu thỏa 1 trong 2 điều kiện sau:

  1. Là dãy số giảm dần.
  2. Với mỗi phần tử ai, ai là số nguyên tố hoặc ai là ước của 1 trong những số trước nó trong dãy.

Input: Số N <=10.000

Output: Dãy số tìm đc, mỗi số cách nhau ít nhất 1 khoảng trắng.

Ví dụ:

Input: 12

Output: 12 11 7 6 5 4 3 2 1


var n:integer;
    a:array[1..1000] of integer;
    i,m:integer;    

    function nt(x:integer):boolean ;
var i:integer;
begin
    if x<2 then exit(false);
        for i:=2 to trunc(sqrt(x)) do 
        if x mod i=0 then exit(false);
        exit(true);
end;

function uoc(x:integer):boolean;
var i:integer;
begin
    uoc := false;
    for i:=1 to m do 
        if a[i] mod x=0 then 
        exit(true);
end;

begin
    readln(n);
    m := 1;
    a[1]:=n;
    for i:=(n-1) downto 1 do 
        if nt(i) or uoc(i) then
    begin
        inc(m);
        a[m]:=i;
    end;
    for i:=1 to m do 
        write(a[i],#32);
    readln;
end.