|
Вопрос # 5 693/ вопрос решён / |
|
Доброго времени суток, уважаемые эксперты! Попробую обратиться со своей проблемой сюда. Необходимо написать на Turbo Prolog следующую задачу: "Разложить число на простые множители". Может есть здесь умельцы пролога.
Примечание #1 (25 октября 2011, 20:17): Вообщем как это всегда и бывает, пока ждал, сам написал) вот код, пользуйтесь.
domains
i=integer
il=integer*
predicates
for(i,i,i)
find_factor(i,i,i)
factor(i,i)
find_factors(i,il,il)
factors(i,il)
proc1(il)
proc2(i)
proc3
clauses
for(A,_,A).
for(A,B,K):-A
find_factor(K,L,M):-K mod L=0, M=L.
find_factor(K,L,M):-K mod L<>0, L<=sqrt(K),
L2=L+1, find_factor(K,L2,M2), M=M2.
find_factor(K,L,M):-K mod L<>0, L>sqrt(K), M=K.
factor(K,M):-find_factor(K,2,M).
find_factors(1,List,List).
find_factors(K,List1,List2):-K>1,
factor(K,M), K2=K div M, List12=[M|List1],
find_factors(K2,List12,List22), List2=List22.
factors(K,List):-find_factors(K,[],List).
proc1([X]):-write(X).
proc1([H|T]):-proc1(T), write("*",H).
proc2(K):-write(K,"="), factors(K,List), proc1(List).
proc3:-write("N = "), readint(N), N>0, proc2(N), write("\n").
goal
proc3.
 |
Вопрос задал: Ученый (статус: 8-ой класс)
Вопрос отправлен: 25 октября 2011, 18:23
Состояние вопроса: решён, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 9; последнее сообщение — 26 октября 2011, 14:50; участников в обсуждении: 3.
|
min@y™ (статус: Доктор наук), 25 октября 2011, 18:30 [#1]:
Пролог в глаза не видел. А на паскале это делается за один перекур.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Ученый (статус: 8-ой класс), 25 октября 2011, 18:38 [#2]:
на паскале, на бейсике, на си даже на лиспе я сам слегнкостью напишу.....а вот на прологе бы....
|
|
min@y™ (статус: Доктор наук), 25 октября 2011, 18:41 [#3]:
Цитата (Ученый):
а вот на прологе бы....
Пролог сильно отличается от Паскаля/Си/Васика?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Ученый (статус: 8-ой класс), 25 октября 2011, 18:43 [#4]:
совсем другая концепция...
|
|
min@y™ (статус: Доктор наук), 25 октября 2011, 18:49 [#5]:
Цитата (Ученый):
совсем другая концепция...
Что, там нет массивов, функций, условного оператора и оператора mod?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Ученый (статус: 8-ой класс), 25 октября 2011, 18:56 [#6]:
практически так)
|
|
min@y™ (статус: Доктор наук), 25 октября 2011, 19:14 [#7]:
Цитата (Ученый):
практически так
Ну, тогда ФТОПКУ!
Цитата (Ученый):
)
Тыкай сюды.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
25 октября 2011, 20:18: Статус вопроса изменён на решённый (изменил автор вопроса — Ученый)
|
min@y™ (статус: Доктор наук), 25 октября 2011, 20:21 [#8]:
Цитата (Ученый):
вот код, пользуйтесь.
Ога! ОБЯЗАТЕЛЬНО воспользуюсь!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Ерёмин А.А. (статус: *Администратор), 26 октября 2011, 14:50 [#9]:
Цитата (min@y™):
Пролог сильно отличается от Паскаля/Си/Васика?
Мегасильно, это логическое программирование. Год назад приходилось работать, но больше я за это не возьмусь.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|