На заданном интервале найти числа, делящиеся на каждую из своих цифр - 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.
Объяснение кода листинга программы
- Объявлены переменные: a, b, i, j, k, c, n, m (тип данных - integer).
- Происходит чтение значений a и b с помощью функции read().
- Переменная k инициализируется нулем.
- Запускается цикл for, который перебирает числа от a до b.
- Внутри цикла: а) Переменная 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 устанавливается в единицу.
- Если значение переменной k по окончании цикла равно нулю, то выводится сообщение
Нет чисел которые делятся на все свои цифры
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д