【发布时间】:2012-06-11 08:41:19
【问题描述】:
我是 SWI-Prolog 的新手,我想检查 Prolog 中的素数功能。
prime(N) :-
N > 1,
M is N - 1,
check(N, M).
check(_, 1).
check(N, M) :-
M > 1,
R is N - M * N / M,
R > 0,
P is M - 1,
check(N, P).
但是当我在 Prolog 中询问 2 + 2 或其他运算符(如 (*)/2、(/)/2、...)时,它会说:undefined procedure: (+)/2。
我认为它适用于see 或tell。我重新分配了see(user) 和tell(user),但此错误再次发生。
为什么?
【问题讨论】:
-
无法在 SWI-Prolog 5.10.1 上重现。您是否尝试在全新、干净的 Prolog 环境中运行它?
-
您显示的代码不会出现错误,这在语法上似乎是正确的。在“命令行”(称为 REPL)上,也许您应该输入类似
?- X is 2+2.