giúp mk vs mk đang cần gấp á!!!!! Viết chương trình tạo ra N số nguyên dương trong khoảng [2..2011] - Xuất ra màn hình các số đã tạo - Xuất ra màn hình các số đã tạo sau khi đã sắp xếp các số đó theo thứ tự tăng dần theo số lượng ước dương của chúng. Nếu có nhiều số có cùng số lượng ước dương, thì số nào nhập trước được viết ra trước. Ví dụ: HSG2.INP 11; 47; 26; 32; 72; 111; 100; 3; 18; 8 HSG2.OUT Cac so da tao: 11; 47; 26; 32; 72; 111; 100; 3; 18; 8 Cac so sau khi da sap xep theo yeu cau: 11; 47; 3; 26; 111; 32; 8; 18; 100; 72

1 câu trả lời

P/S: Hi vọng là hiểu cái code này nói gì chứ ngồi làm nãy giờ đấy

program bai3;
uses crt;
var dayso,daysouoc: array[1..2011] of cardinal;
var N,i,k,t,m: longint;

begin;
  clrscr;
  randomize;
  writeln('Nhap so so nguyen duong can tao ra');readln(N);
  if (N<2) or (N>2011) then writeln('Chi co the tao tu 2 den 2011 so')
                                       else begin;
  writeln('Cac so duoc tao la: ');
  for i:=1 to N do
    begin;
      dayso[i]:=random(999999)+1;
      write(dayso[i],' ');
    end;
  for i:=1 to N do
    begin;
      daysouoc[i]:=0;
      for k:=1 to dayso[i] do
        begin;
          if dayso[i] mod k =0 then daysouoc[i]:=daysouoc[i]+1;
        end;
    end;
  writeln(' ');
  writeln('Cac so sau khi da sap xep theo yeu cau la:');
  for i:=1 to N-1 do
    begin;
      for k:=i+1 to N do
        begin;
          if daysouoc[i]>daysouoc[k] then
            begin;
              t:=daysouoc[i];
              daysouoc[i]:=daysouoc[k];
              daysouoc[k]:=t;
              m:=dayso[i];
              dayso[i]:=dayso[k];
              dayso[k]:=m;
            end;
        end;
    end;
  for i:=1 to N do
    begin;
      daysouoc[i]:=dayso[i];
      write(dayso[i],' ');
    end;
  end;
  readln;
end.