Другие языки программирования и технологии

Дано натуральное число N. Напечатать все его делители.

module N89416610;
import
  System,
  System.Console as stdio;

type
  TVector = array * of integer{64};
var
  N, B, i, k: integer{64};
  Error: boolean;
  a: TVector;
begin
  repeat
    stdio.Write("Введите натуральное число: ");
    Error := false;
    do
      N := System.Int64.Parse(stdio.ReadLine())
    on exception do
      Error := true
    end;
    Error := Error or (N < 1);
    if Error then
      stdio.Write("Ошибка! ")
    end
  until ~Error;
  a := new TVector(cardinal(2 * (System.Math.Pow(N, 1 / 3) + 1), 32));
  k := 0;
  a[k] := 1;
  if N # 1 then
    inc(k);
    a[k] := N
  end;
  B := integer(System.Math.Floor(System.Math.Sqrt(N)), 64);
  for i := 2 to B do
    if N mod i = 0 then
      inc(k);
      a[k] := i;
      if N div i # a[k] then
        inc(k);
        a[k] := N div i
      end
    end
  end;
  System.Array.Sort(a);
  B := 0;
  while a[B] = 0 do
    inc(B)
  end;
  stdio.WriteLine("Все делители числа {0} (всего {1}):", N, k + 1);
  for i := B to k + B do
    stdio.Write("{0, 16}", a[і])
  end;
  stdio.WriteLine; stdio.WriteLine;
  stdio.Write("Для завершения работы нажмите любую клавишу... ");
  stdio.ReadKey
end N89416610.
Сергей Толстых
Сергей Толстых
51 590
Лучший ответ
Язык какой?
Евгений 95
Евгений 95
19 303

Похожие вопросы