Так как язык не указан, приведу пример на 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).
s,s1:string;
a:array[1..100] of string;
n,i,j,k:byte;
begin
writeln('Введите текст из слов, разделенных пробелами');
readln(s);
s:=' '+s+' ';
n:=length(s);
i:=2;k:=0;while i<=n do
if (s[i]<>' ')and (s[i-1]=' ') then
begin k:=k+1;
j:=i;
s1:='';
while (j<=n) and (s[j]<>' ') do
begin
s1:=s1+s[j];
j:=j+1;
end;
a[k]:=s1;
i:=i+length(s1);
end
else i:=i+1;
for i:=1 to k-1 do
for j:=i+1 to k do
if a[i]>a[j] then
begin s1:=a[i];
a[i]:=a[j];
a[j]:=s1
end;
writeln('Слова текста в алфавитном порядке:');
for i:=1 to k do
writeln(a[i]);
end.