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

code: #delphi
//На форме размещаем Edit1 для ввода N, Button1 и Memo1 для вывода данных.
//На Memo1 помещаем полосу вертикальной прокрутки для вывода большого 
//количества чисел.
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.

автор: puporev

Поделиться:

Похожие статьи: