На заданном интервале найти числа, делящиеся на каждую из своих цифр - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Напишите программу, которая вводит натуральные числа а и b и выводит на экран все натуральные числа на отрезке [ a , b ] , делящиеся на каждую из своих цифр. Входная строка содержит два натуральных числа – значения a и b , разделённых пробелами. Гарантируется, что a ≤ b . Программа должна вывести в одну строчку все натуральные числа на отрезке [ a , b ] , делящиеся на каждую из своих цифр. Числа разделяются пробелами. Примеры входные данные 10 20 выходные данные 11 12 15

Решение задачи: «На заданном интервале найти числа, делящиеся на каждую из своих цифр»

textual
Листинг программы
var a,b,i,j,k,c,n,m:integer;
begin
read(a,b);
k:=0;
for i:=a to b do
 begin
  j:=i;
  n:=0;
  m:=0;
  while j>0 do
   begin
    c:=j mod 10;
    n:=n+1;
    if(c<>0)and(i mod c=0)then m:=m+1;
    j:=j div 10;
   end;
 if m=n then
  begin
   write(i,' ');
   k:=1;
  end;
end;
if k=0 then write('Нет чисел которые делятся на все свои цифры');
end.

Объяснение кода листинга программы

  1. Объявлены переменные: a, b, i, j, k, c, n, m (тип данных - integer).
  2. Происходит чтение значений a и b с помощью функции read().
  3. Переменная k инициализируется нулем.
  4. Запускается цикл for, который перебирает числа от a до b.
  5. Внутри цикла: а) Переменная j инициализируется текущим числом i. б) Переменная n инициализируется нулем. Она будет использоваться для подсчета количества цифр числа i. в) Переменная m инициализируется нулем. Она будет использоваться для подсчета количества цифр числа i, которые делятся на само число i. г) Запускается цикл while, который перебирает цифры числа j (т.е. числа i). д) Внутри цикла while: а) Вычисляется остаток от деления числа j на 10 (модуль 10). Это будет следующей цифрой числа j. б) Увеличивается значение переменной n на единицу. в) Проверяется условие (c<>0)and(i mod c=0). Если оно истинно, то это означает, что текущая цифра числа i (c) делит само число i без остатка. В этом случае значение переменной m увеличивается на единицу. е) Число j делится на 10 без остатка (j div 10). Это удаляет последнюю цифру числа j. е) Если значение переменной m равно значению переменной n, то это означает, что все цифры числа i делят само число i без остатка. В этом случае число i выводится на экран, переменная k устанавливается в единицу.
  6. Если значение переменной k по окончании цикла равно нулю, то выводится сообщение Нет чисел которые делятся на все свои цифры.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.7 из 5
Похожие ответы