Найти все натуральные числа, не превосходящие данного n, которые делятся на каждую из своих цифр- Delphi(Делфи)

procedure TForm1.Button1Click(Sender: TObject);
var
  n: longint;
  i: integer;
  // Создаем функцию логического типа,определяющую делится или нет
  // число на все свои цифры.
  function Del(a: integer): boolean;
  var
    k, i, b: integer;
    c: boolean;
  begin
    k := 0;
    i := 0;
    b := a;
    while b > 0 do
    begin
      n := b mod 10; // находим последнюю цифру
      if n = 0 then // если она 0, заканчиваем цикл
      begin
        c := false;
        exit;
      end
      else
      begin
        i := i + 1; // считаем количество цифр
        if a mod n = 0 then
          k := k + 1; // считаем количества положительных результатов
        b := b div 10; // отбрасываем использованную цифру
      end;
    end;
    if k = i then
      c := true // делится не все цифры
    else
      c := false; // не на все цифры
    result := c;
  end;

begin
  n := strtoint(edit1.text); // вводим N
  for i := 1 to n do
    if Del(i) = true then // исследуем все числа от 1 до N
      memo1.text := memo1.text + inttostr(i) + ' ';
end;

end.

Leave a Comment

5 + 1 =