Составьте программу вывода на экран всех натуральных чисел, не превосходящих N и делящихся на каждую из своих цифр — Pascal(Паскаль)

uses crt;
var n,i,m:integer;
    c,kd,kc,f:byte;
begin
clrscr;
repeat
write('Введите число до 9999 n=');{болше некрасивый вывод и на экран не входят}
readln(n);
until (n>0)and(n<10000);
writeln('Числа делятся на все свои цифры:');
for i:=1 to n do
 begin
  m:=i;
  kd:=0;
  kc:=0;
  while m>0 do
   begin
    c:=m mod 10;{цифры}
    kc:=kc+1;{их общее количество}
    if(c<>0)and(i mod c=0)then{если цифра не ноль и делит}
    kd:=kd+1;{количество делителей}
    m:=m div 10;
   end;
  if kd=kc then write(i:5);
 end;
readln
end.

Следующий вариант

uses crt;
function DelCif(x:longint):boolean;
var y:longint;
    k:byte;
begin
y:=x;
while y<>0 do
 begin
  k:=y mod 10;
  if (k=0)or(x mod k<>0)then
    begin
     DelCif:=false;
     break;
    end;
  y:=y div 10;
 end;
end;
var n,i,k:longint;
begin
clrscr;
write('Введите N=');
readln(n);
writeln('Числа делятся на все свои цифры:');
for i:=1 to n do
if DelCif(i)then
 begin
  write(i:5);
  k:=k+1;
 end;
readln;
end.

Leave a Comment

+ 52 = 61