Так как язык не указан, приведу пример на SWI-Prolog.
Код:
read_int(Int) :- read(Int), integer(Int).split_int_by_numbers(0, []) :- !.split_int_by_numbers(N, [Number|Ints]) :- Number is mod(N, 10), RestN is div(N, 10), split_int_by_numbers(RestN, Ints).test_to_div(_, []).test_to_div(N, [Number|Ints]) :- mod(N, Number) =:= 0, test_to_div(N, Ints). test(Int) :- split_int_by_numbers(Int, Numbers), test_to_div(Int, Numbers), write(Int), write(" - Yes!"), nl.test(Int) :- write(Int), write(" - No!"), nl.?- read_int(Int), test(Int).

Поделитесь своими знаниями, ответьте на вопрос:
Например, python - это язык с динамической типизацией. В одной программе можно сделать один за другим такие присваивания:
а=256
а="кукареку", то есть программа сначала будет хранить в переменной целое число 256, а потом поменяем его на строку "кукареку".
Pascal же язык со строгой типизацией. Для хранения чисел там надо выделить одни переменные, а для хранения строк - другие:
var
a, b : integer;
c : string;
begin
a:=256;
b:=12;
c:="hello"
Вот так.