| 
| 
 | Вопрос # 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™): Пролог сильно отличается от Паскаля/Си/Васика? Мегасильно, это логическое программирование. Год назад приходилось работать, но больше я за это не возьмусь.
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |