prolog - 使用 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).
解决方案
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 ;
...
推荐阅读
- node.js - 关于如何在 Git 中添加子模块的困惑
- if-statement - 比较 3 个 glsl 向量
- android - Android 音频编码失败
- mysql - Golang api无法连接到mysql DB(关闭)
- angular - Angular 路由器不使用 PathParam 加载我的页面
- python - 如何在图像字段中创建删除按钮?
- docker - 从 dockerfile 退出构建,而从图像保持运行
- javascript - 函数中的过滤方法以输出平均值
- c++ - 如何确定您未声明或 CoCreate 的 COM 对象的线程模型
- php - 如何在 PHP CLI 中运行 cURL 命令