Показать сообщение отдельно

  #8  
Старый 04.05.2008, 13:05
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме:
3660186

Репутация: 905


По умолчанию

Catsy, первая задача
Код:
program deliteli;

{Составить программу для нахождения чисел из интервала [M, N],
имеющих наибольшее количество делителей.}

procedure GetCount (x : integer; var count : integer);
{Подсчет кол-ва делителей для каждого числа}
var
  i, j : integer;
begin
  i := 2;
  count := 0;
  j := x div 2;
  while (i <= j) do begin
    if x mod i = 0 then begin
      write (i, ' ');
      inc (count);
      x := x div i;
    end else
      inc (i);
  end;
  writeln;
end;

procedure PrintNumbers (x, y : array of integer; count, index : integer);
var
  i : integer;
begin
  for i := 0 to count - 1 do
    if y [i] = index then
      writeln (x [i]);
end;

var
  n1, n2, i, j, count, max : integer; {Первое, последнее число, счетчики цикла, кол-во делителей, максимальное кол-во делителей}
  numbers : array [1..255] of integer; {Массив для чисел}
  del_count : array [1..255] of integer; {Массив для количества делителей каждого числа}

begin
  write ('Введите первое число n1: ');
  readln (n1);
  write ('Введите последнее число n2: ');
  readln (n2);
  count := 0;
  max := 0;
  j := 1;
  for i := n1 to n2 do begin
    numbers [j] := i;
    write ('Делители числа ', i, ': ');
    GetCount (i, count);
    del_count [j] := count;
    if count > max then
      max := count;
    writeln ('Количество: ', count);
    inc (j);
  end;
  writeln ('Максимальное число делителей: ', max);
  writeln ('Числа, имеющие наибольшее кол-во делителей');
  PrintNumbers (numbers, del_count, n2 - n1 + 1, max);
end.
Условие второй как-то не совсем понял
 
Ответить с цитированием