Рекурсивная факторизация

Материал из Вики ИТ мехмата ЮФУ
Перейти к: навигация, поиск

Процедура Factorization должна выводить все простые делители целого положительного числа number, не меньшие, чем divisor. Однако она содержит ошибки.

procedure Factorization(number, divisor: integer); 
begin
  Assert(number > 0,   'Factorization: number > 0');
  Assert(divisor > 0,  'Factorization: divisor > 0');
  if number = 1 then
    exit
  else if number mod divisor = 0 then
  begin
    Write(divisor, ' ');
    Factorization(number div divisor, divisor);
  end
  else
    Factorization(number, divisor + 1);
end;