为什么这个程序在 Prolog 中不起作用?
% Goldbach's conjecture.
% Goldbach's conjecture says that every positive even number greater
% than 2 is the sum of two prime numbers. Example: 28 = 5 + 23.
:- ensure_loaded(p31).
% goldbach(N,L) :- L is the list of the two prime numbers that
% sum up to the given N (which must be even).
% (integer,integer) (+,-)
goldbach(4,[2,2]) :- !.
goldbach(N,L) :- N mod 2 =:= 0, N > 4, goldbach(N,L,3).
goldbach(N,[P,Q],P) :- Q is N - P, is_prime(Q), !.
goldbach(N,L,P) :- P < N, next_prime(P,P1), goldbach(N,L,P1).
next_prime(P,P1) :- P1 is P + 2, is_prime(P1), !.
next_prime(P,P1) :- P2 is P + 2, next_prime(P2,P1).
首先,我必须删除代码行:- ensure_loaded(p31)。否则标记一个错误说不存在。
其次,当我使用 ?-goldbach(4,X,Y) 在 SWI-Prolog 屏幕上运行它时。标记了一个错误,上面写着:
错误:参数没有充分实例化
为什么?
有人可以帮我修复程序吗?
谢谢你。