首页 > 解决方案 > 使用 isprime/1 内置函数生成所有素数。序言

问题描述

问:?-素数(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).

标签: prologprimes

解决方案


incr/2对谓词使用以下替代方法:

incr(I, I).
incr(I, K) :-
    J is I + 1,
    incr(J, K).

使用目标调用它:

| ?- incr(1,X), isprime(X).
?- incr(1,X), isprime(X).
X = 2 ;
X = 3 ;
X = 5 ;
X = 7 ;
X = 11 ;
X = 13 ;
...

推荐阅读