|
Вопрос # 3 640/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
Помогите пожалуйста решить следующую задачу:
Найти все натуральные числа не превосходящие N, которые делятся на каждую из своих цифр.
 |
Вопрос задал: prog-mer (статус: Посетитель)
Вопрос отправлен: 10 января 2010, 22:23
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 1; последнее сообщение — 11 января 2010, 14:12; участников в обсуждении: 1.
|
IlluminatI (статус: 2-ой класс), 11 января 2010, 14:12 [#1]:
Здравствуйте Олег Валерьевич!
Вот решение вашей задачи, правда непонятно что делать, если в числе содержится 0 (в моем решение он учитывается как делитель):
uses
SysUtils;
var n: integer;
k: integer = 0; // количество чисел
i: integer; // параметр цикла
function Delit(x: integer): boolean;
var z, y: integer;
begin
y:=x;
while x (не равно) 0 do
begin
z:=x mod 10; // отделяем цифру от числа
x:=x div 10; // уменьшаем число на 1 цифру
if z (не равно) 0 then // проверка на 0, чтобы не было деления на 0
if not(y mod z = 0) then // если не делится, сообщим об этом и выйдем
begin
Result:=false;
exit;
end;
end;
Result := true; // все ок, число делится
end;
begin
writeln('Input N'); // читаем N
readln(n);
for i:=1 to n do // цикл от 1..N
if Delit(i) then // проверяем в функции
begin
writeln('Chislo ',i,' delitsa na vse svoi cifri');
inc(k); // считаем количество
end;
writeln('Vsego chisel: ', k); // выводим
readln;
end.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|