【发布时间】:2020-06-28 22:35:00
【问题描述】:
问题问: ?- 素数(X)。
解决方案应如下所示:
X = 1;
X = 1;
X = 2;
X = 3;
X = 5;
X ....
这就是我到目前为止所拥有的: prime(X) :- 重复,incr(X,X),isprime(X)。
incr(X,X1) :- X1 is X+1.
isprime(X):-
Y is 2,
X > 1,
\+div(X,Y).
div(X,Y):-
N is Y*Y,
N =< X,
X mod Y =:= 0.
div(X,Y):-
Y < X,
Y1 is Y+1,
div(X,Y1).
【问题讨论】:
-
incr(X, X)永远无法满足,因为没有数字等于它的后继者。 -
是的,这是事实,但是您如何启动 X 让我们说 1 以便开始增量。所以基本上我试图测试 isprime 中的每个整数以确定所有素数。否则 prolog 会告诉我他们没有足够的数据。