Cho mình xin thuật toán bài sắp xếp các số theo thứ tự giảm dần theo số ước vd Cac so da tao: 56,78,30,66 Sx: 78,30,56,66.1

1 câu trả lời

uses crt;

var n,i,j:byte;

a:array[1..100] of word;

    tam:word;

function souoc(x:word):word;

var t:word;

        begin

                souoc:=2;

                for t:=2 to n div 2 do

                if n mod t=0 then inc(souoc);

        end;

BEGIN

        clrscr;

        write('Nhap so luong so:'); readln(n);

        for i:=1 to n do

        begin

                write('Nhap a[',i,']:');

                readln(a[i]);

        end;

        for i:=1 to n-1 do

                for j:=i+1 to n do

                if (souoc(a[j])>souoc(a[i])) or ((souoc(a[j])=souoc(a[i])) and (a[j]>=a[i])) then

                begin

                        tam:=a[i];

                        a[i]:=a[j];

                        a[j]:=tam;

                end;

        write('Day so sau khi sap xep:');

        for i:=1 to n do write(a[i],' ');

        readln

END.

Chúc bạn học tốt.

Câu hỏi trong lớp Xem thêm